88 "time"
99)
1010
11- func writeByLine (m * MultilineCollector , data string ) {
12- for _ , line := range strings .Split (data , "\n " ) {
13- m .Add (LogEntry {Content : line , Level : LevelUnknown })
11+ func writeByLine (m * MultilineCollector , data string , ts time. Time ) {
12+ for i , line := range strings .Split (data , "\n " ) {
13+ m .Add (LogEntry {Timestamp : ts . Add ( time . Millisecond * time . Duration ( i )), Content : line , Level : LevelUnknown })
1414 }
1515}
1616
@@ -19,8 +19,7 @@ func TestMultilineCollector(t *testing.T) {
1919 m := NewMultilineCollector (ctx , 10 * time .Millisecond )
2020 defer cancel ()
2121
22- dateStr := "2020-03-20 08:48:57,067 "
23- tracebackStr := `ERROR [django.request:222] log 46 140452532862280 Internal Server Error: /article
22+ tracebackStr := `2020-03-20 08:48:57,067 ERROR [django.request:222] log 46 140452532862280 Internal Server Error: /article
2423Traceback (most recent call last):
2524 File "/usr/local/lib/python3.8/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
2625 self.connect()
@@ -79,28 +78,28 @@ Traceback (most recent call last):
7978 super(Connection, self).__init__(*args, **kwargs2)
8079django.db.utils.OperationalError: (1040, 'Too many connections')`
8180
82- writeByLine (m , dateStr + tracebackStr )
81+ writeByLine (m , tracebackStr , time . Unix ( 100500 , 0 ) )
8382 msg := <- m .Messages
8483 assert .Equal (t , tracebackStr , msg .Content )
84+ assert .Equal (t , int64 (100500 ), msg .Timestamp .Unix ())
8585
86- tracebackStr = `ERROR:__main__:Traceback (most recent call last):
86+ tracebackStr = `2020-03-20 08:48:57,067 ERROR:__main__:Traceback (most recent call last):
8787 File "<stdin>", line 2, in <module>
8888 File "<stdin>", line 2, in do_something_that_might_error
8989 File "<stdin>", line 2, in raise_error
9090RuntimeError: something bad happened!`
91- writeByLine (m , dateStr + tracebackStr )
91+ writeByLine (m , tracebackStr , time . Unix ( 0 , 0 ) )
9292 msg = <- m .Messages
9393 assert .Equal (t , tracebackStr , msg .Content )
9494
9595 m .Add (LogEntry {Content : "E0504 07:38:36.184861 1 replica_set.go:450] starting worker #224" , Level : LevelUnknown })
9696 m .Add (LogEntry {Content : "E0504 07:38:36.184861 1 replica_set.go:450] starting worker #225" , Level : LevelUnknown })
9797 msg = <- m .Messages
98- assert .Equal (t , "E0504 1 replica_set.go:450] starting worker #224" , msg .Content )
98+ assert .Equal (t , "E0504 07:38:36.184861 1 replica_set.go:450] starting worker #224" , msg .Content )
9999 msg = <- m .Messages
100- assert .Equal (t , "E0504 1 replica_set.go:450] starting worker #225" , msg .Content )
100+ assert .Equal (t , "E0504 07:38:36.184861 1 replica_set.go:450] starting worker #225" , msg .Content )
101101
102- dateStr = "2020-03-31 11:35:06.158 "
103- javaStackTraceStr := `[ERROR] javax.servlet.ServletException: Something bad happened
102+ javaStackTraceStr := `2020-03-31 11:35:06.158 [ERROR] javax.servlet.ServletException: Something bad happened
104103 at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60)
105104 at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
106105 at com.example.myproject.ExceptionHandlerFilter.doFilter(ExceptionHandlerFilter.java:28)
@@ -163,16 +162,14 @@ Caused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1:
163162 at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:57)
164163 ... 54 more`
165164
166- writeByLine (m , dateStr + javaStackTraceStr )
165+ writeByLine (m , javaStackTraceStr , time . Unix ( 0 , 0 ) )
167166 msg = <- m .Messages
168167 assert .Equal (t , javaStackTraceStr , msg .Content )
169168
170169 data := `Order response: {"statusCode":406,"body":{"timestamp":1648205755430,"status":406,"error":"Not Acceptable","exception":"works.weave.socks.orders.controllers.OrdersController$PaymentDeclinedException","message":"Payment declined: amount exceeds 100.00","path":"/orders"},"headers":{"x-application-context":"orders:80","content-type":"application/json;charset=UTF-8","transfer-encoding":"chunked","date":"Fri, 25 Mar 2022 10:55:55 GMT","connection":"close"},"request":{"uri":{"protocol":"http:","slashes":true,"auth":null,"host":"orders","port":80,"hostname":"orders","hash":null,"search":null,"query":null,"pathname":"/orders","path":"/orders","href":"http://orders/orders"},"method":"POST","headers":{"accept":"application/json","content-type":"application/json","content-length":232}}}
171170Order response: {"timestamp":1648205755430,"status":406,"error":"Not Acceptable","exception":"works.weave.socks.orders.controllers.OrdersController$PaymentDeclinedException","message":"Payment declined: amount exceeds 100.00","path":"/orders"}
172171`
173- writeByLine (m , data )
172+ writeByLine (m , data , time . Unix ( 0 , 0 ) )
174173 msg = <- m .Messages
175- assert .Equal (t ,
176- clean (strings .Split (data , "\n " )[0 ]),
177- msg .Content )
174+ assert .Equal (t , strings .Split (data , "\n " )[0 ], msg .Content )
178175}
0 commit comments