Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
c095e35f
Commit
c095e35f
authored
Nov 08, 2015
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #16756 from krousey/http_codes
Auto commit by PR queue bot
parents
8fd069de
05182fc7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
56 additions
and
11 deletions
+56
-11
log.go
pkg/httplog/log.go
+26
-11
log_test.go
pkg/httplog/log_test.go
+30
-0
No files found.
pkg/httplog/log.go
View file @
c095e35f
...
...
@@ -53,10 +53,12 @@ type logger interface {
// the http.ResponseWriter. We can recover panics from go-restful, and
// the logging value is questionable.
type
respLogger
struct
{
status
int
statusStack
string
addedInfo
string
startTime
time
.
Time
hijacked
bool
statusRecorded
bool
status
int
statusStack
string
addedInfo
string
startTime
time
.
Time
req
*
http
.
Request
w
http
.
ResponseWriter
...
...
@@ -155,7 +157,11 @@ func (rl *respLogger) Addf(format string, data ...interface{}) {
func
(
rl
*
respLogger
)
Log
()
{
latency
:=
time
.
Since
(
rl
.
startTime
)
if
glog
.
V
(
2
)
{
glog
.
InfoDepth
(
1
,
fmt
.
Sprintf
(
"%s %s: (%v) %v%v%v [%s %s]"
,
rl
.
req
.
Method
,
rl
.
req
.
RequestURI
,
latency
,
rl
.
status
,
rl
.
statusStack
,
rl
.
addedInfo
,
rl
.
req
.
Header
[
"User-Agent"
],
rl
.
req
.
RemoteAddr
))
if
!
rl
.
hijacked
{
glog
.
InfoDepth
(
1
,
fmt
.
Sprintf
(
"%s %s: (%v) %v%v%v [%s %s]"
,
rl
.
req
.
Method
,
rl
.
req
.
RequestURI
,
latency
,
rl
.
status
,
rl
.
statusStack
,
rl
.
addedInfo
,
rl
.
req
.
Header
[
"User-Agent"
],
rl
.
req
.
RemoteAddr
))
}
else
{
glog
.
InfoDepth
(
1
,
fmt
.
Sprintf
(
"%s %s: (%v) hijacked [%s %s]"
,
rl
.
req
.
Method
,
rl
.
req
.
RequestURI
,
latency
,
rl
.
req
.
Header
[
"User-Agent"
],
rl
.
req
.
RemoteAddr
))
}
}
}
...
...
@@ -166,6 +172,9 @@ func (rl *respLogger) Header() http.Header {
// Write implements http.ResponseWriter.
func
(
rl
*
respLogger
)
Write
(
b
[]
byte
)
(
int
,
error
)
{
if
!
rl
.
statusRecorded
{
rl
.
recordStatus
(
http
.
StatusOK
)
// Default if WriteHeader hasn't been called
}
return
rl
.
w
.
Write
(
b
)
}
...
...
@@ -181,7 +190,19 @@ func (rl *respLogger) Flush() {
// WriteHeader implements http.ResponseWriter.
func
(
rl
*
respLogger
)
WriteHeader
(
status
int
)
{
rl
.
recordStatus
(
status
)
rl
.
w
.
WriteHeader
(
status
)
}
// Hijack implements http.Hijacker.
func
(
rl
*
respLogger
)
Hijack
()
(
net
.
Conn
,
*
bufio
.
ReadWriter
,
error
)
{
rl
.
hijacked
=
true
return
rl
.
w
.
(
http
.
Hijacker
)
.
Hijack
()
}
func
(
rl
*
respLogger
)
recordStatus
(
status
int
)
{
rl
.
status
=
status
rl
.
statusRecorded
=
true
if
rl
.
logStacktracePred
(
status
)
{
// Only log stacks for errors
stack
:=
make
([]
byte
,
2048
)
...
...
@@ -190,10 +211,4 @@ func (rl *respLogger) WriteHeader(status int) {
}
else
{
rl
.
statusStack
=
""
}
rl
.
w
.
WriteHeader
(
status
)
}
// Hijack implements http.Hijacker.
func
(
rl
*
respLogger
)
Hijack
()
(
net
.
Conn
,
*
bufio
.
ReadWriter
,
error
)
{
return
rl
.
w
.
(
http
.
Hijacker
)
.
Hijack
()
}
pkg/httplog/log_test.go
View file @
c095e35f
...
...
@@ -129,3 +129,33 @@ func TestUnlogged(t *testing.T) {
handler
(
w
,
req
)
}
}
type
testResponseWriter
struct
{}
func
(
*
testResponseWriter
)
Header
()
http
.
Header
{
return
nil
}
func
(
*
testResponseWriter
)
Write
([]
byte
)
(
int
,
error
)
{
return
0
,
nil
}
func
(
*
testResponseWriter
)
WriteHeader
(
int
)
{}
func
TestLoggedStatus
(
t
*
testing
.
T
)
{
req
,
err
:=
http
.
NewRequest
(
"GET"
,
"http://example.com"
,
nil
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
var
tw
http
.
ResponseWriter
=
new
(
testResponseWriter
)
logger
:=
NewLogged
(
req
,
&
tw
)
logger
.
Write
(
nil
)
if
logger
.
status
!=
http
.
StatusOK
{
t
.
Errorf
(
"expected status after write to be %v, got %v"
,
http
.
StatusOK
,
logger
.
status
)
}
tw
=
new
(
testResponseWriter
)
logger
=
NewLogged
(
req
,
&
tw
)
logger
.
WriteHeader
(
http
.
StatusForbidden
)
logger
.
Write
(
nil
)
if
logger
.
status
!=
http
.
StatusForbidden
{
t
.
Errorf
(
"expected status after write to remain %v, got %v"
,
http
.
StatusForbidden
,
logger
.
status
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment