Skip to content

Commit

Permalink
Merge: Adds a module for logging requests
Browse files Browse the repository at this point in the history
Title pretty much says it all

Pull-Request: #1869
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Lucas Bajolet <r4pass@hotmail.com>
  • Loading branch information
privat committed Dec 1, 2015
2 parents f8d5c1a + 21d2358 commit 02564e8
Showing 1 changed file with 59 additions and 0 deletions.
59 changes: 59 additions & 0 deletions lib/nitcorn/log.nit
@@ -0,0 +1,59 @@
# This file is part of NIT ( http://www.nitlanguage.org ).
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Services inserting a timestamp in all prints and to log each requests
# Also keep track of the performances of the requests
module log

import reactor
import realtime
import performance_analysis

redef class Action

redef fun prepare_respond_and_close(request, truncated_uri, http_server) do
if not log_nitcorn_actions then
super
return
end
print """{{{class_name}}} enter:
uri="{{{truncated_uri}}}"
query="{{{request.query_string}}}"
body:{{{request.body.length}}} bytes"""
var clock = new Clock
super
var perf = sys.perfs[class_name]
perf.add(clock.lapse)
if perf.count % perfs_print_period == 0 then print "{class_name} perfs: {perf}:"
print "{class_name} return: uri={truncated_uri}"
end
end

redef fun print(object) do
var timestamp = new Tm.gmtime
super "{timestamp.year}/{timestamp.mon}/{timestamp.mday} "+
"{timestamp.hour}:{timestamp.min}:{timestamp.sec}: {object}"
end

redef fun print_error(object) do
var timestamp = new Tm.gmtime
super "{timestamp.year}/{timestamp.mon}/{timestamp.mday} "+
"{timestamp.hour}:{timestamp.min}:{timestamp.sec}: {object}"
end

# Should the actions be logged ?
fun log_nitcorn_actions: Bool do return false

# Number of actions executed before printing the perfs
fun perfs_print_period: Int do return 20

0 comments on commit 02564e8

Please sign in to comment.