Changeset 1096
- Timestamp:
- 06/19/08 15:07:39 (6 months ago)
- Files:
-
- trunk/mango/net/servlet/Servlet.d (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/mango/net/servlet/Servlet.d
r1089 r1096 62 62 this (char[] name = null) 63 63 { 64 this.name = name; 65 log = Log.lookup (name); 64 if (name.length is 0) 65 name = this.classinfo.name; 66 67 log = Log.lookup (this.name = name); 66 68 } 67 69 … … 90 92 91 93 /********************************************************************** 92 94 93 95 Servlet metrics 94 96 … … 97 99 struct Metrics 98 100 { 99 char[] name; 100 101 ulong ok = 0, 102 bad = 0, 101 // counters 102 ulong ok = 0, 103 bad = 0, 103 104 fail = 0; 104 105 double time = 0, 106 average = 0, 105 106 // rolling average time 107 float current = 0, 108 average = 0, 107 109 average2 = 0, 110 average3 = 0, 108 111 average4 = 0, 112 average5 = 0, 113 average6 = 0, 114 average7 = 0, 109 115 average8 = 0; 110 116 111 112 113 void update (HttpStatus status, double time) 117 Metrics failure () 118 { 119 ++fail; 120 return *this; 121 } 122 123 Metrics success (HttpStatus status, float time) 114 124 { 115 125 if (status.code < HttpResponseCode.BadRequest) … … 118 128 ++bad; 119 129 120 this.time = time; 121 average2 = (average2 + time) / 2.0; 122 average4 = (average4 + average2) / 2.0; 123 average8 = (average8 + average4) / 2.0; 124 average = (average + average8) / 2.0; 130 average8 = average7; 131 average7 = average6; 132 average6 = average5; 133 average5 = average4; 134 average4 = average3; 135 average3 = average2; 136 average2 = average; 137 current = time; 138 average = ((current + average2 + 139 average3 + average4 + 140 average5 + average6 + 141 average7 + average8) / 8.0); 142 return *this; 125 143 } 126 144 } … … 374 392 375 393 // update metrics 376 metric.update (response.getStatus, timer.stop); 377 378 if (log) 394 auto m = metric.success (response.getStatus, timer.stop); 395 396 // logging enabled? 397 if (log.enabled(log.Info)) 379 398 log.info ("{} [{.512}] - {} good, {} bad, {} fail, {}us [{}]", 380 method, request.path, metric.ok, metric.bad, metric.fail,381 cast(int)(metric.time * 1_000_000),382 cast(int)(metric.average * 1_000_000));399 method, request.path, m.ok, m.bad, m.fail, 400 cast(int) (m.current * 1000000.0), 401 cast(int) (m.average * 1000000.0)); 383 402 384 403 } catch (Exception e) 385 404 { 386 ++metric.fail; 387 if (log) 388 log.error ("{} [{.512}] - {} good, {} bad, {} fail: {.256}", 389 method, request.path, metric.ok, metric.bad, metric.fail, e); 405 auto m = metric.failure; 406 log.error ("{} [{.512}] - {} good, {} bad, {} fail: {.256}", 407 method, request.path, m.ok, m.bad, m.fail, e); 390 408 throw exception; 391 409 }
