技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> 改造 Mojolicious 让日志显示当前模块和行号

改造 Mojolicious 让日志显示当前模块和行号

浏览:1148次  出处信息

原始显示

本着分享的精神, 给近一二年使用 Mojolicious 的经验分享给大家. 今天要分享的是怎么加强默认 Mojo 显示日志, 让我们更加好的排错, 默认显示的时候是下面这样:

[Mon Jun  9 18:40:06 2014] [debug] GET "/perldoc".
[Mon Jun  9 18:40:06 2014] [debug] Routing to a callback.
[Mon Jun  9 18:40:06 2014] [debug] Rendering inline template "0667de3944df7624273d6f814d01f4c9".
[Mon Jun  9 18:40:06 2014] [debug] Rendering inline template "4fcf2af99f1803a7a26c2e9b04430f8c".
[Mon Jun  9 18:40:06 2014] [debug] 200 OK (0.169724s, 5.892/s).

改造

有时我非常想知道, 这行日志到底是谁, 在哪打印出来的, 现在来让我们来实现这个功能, 如果是 Mojolicious::Lite

if( app->log->is_level('debug') ) { 
    nowarnings 'redefine';
    *Mojo::Log::_format = sub{
        my($self, $level, @lines) = @_; 
        my@caller= caller(4);
        my$caller= join' ', $caller[0], $caller[2];
        return'['. localtime(time) . "][$level] [$caller] ". join("\n", @lines). "\n";
    }   
}

如果是 Mojolicious 就给下列代码写到  startup 当中

if( $self->app->log->is_level('debug') ) { 
    nowarnings 'redefine';
    *Mojo::Log::_format = sub{
        my($self, $level, @lines) = @_; 
        my@caller= caller(4);
        my$caller= join' ', $caller[0], $caller[2];
        return'['. localtime(time) . "][$level] [$caller] ". join("\n", @lines). "\n";
    }   
}

最终效果

这样日志会显示成

[Mon Jun  9 18:35:47 2014][debug] [Mojolicious 107] GET "/perldoc".
[Mon Jun  9 18:35:47 2014][debug] [Mojolicious::Routes 119] Routing to a callback.
[Mon Jun  9 18:35:48 2014][debug] [Mojolicious::Plugin::EPLRenderer 34] Rendering inline template "0667de3944df7624273d6f814d01f4c9".
[Mon Jun  9 18:35:48 2014][debug] [Mojolicious::Plugin::EPLRenderer 34] Rendering inline template "4fcf2af99f1803a7a26c2e9b04430f8c".
[Mon Jun  9 18:35:48 2014][debug] [Mojolicious::Controller 210] 200 OK (0.171894s, 5.818/s).

象上面, 我们这样能清楚的知道是哪行, 那个函数打印了这个日志.


建议继续学习:

  1. server日志的路径分析    (阅读:10110)
  2. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁)    (阅读:8859)
  3. 利用脚本分析日志并利用snmp自定义OID,再通过cacti画图    (阅读:8686)
  4. tomcat catalina.out日志切割每天生成一个文件    (阅读:8087)
  5. 分布式日志系统scribe使用手记    (阅读:8043)
  6. AWStats是一个基于Perl的WEB日志分析工具。    (阅读:6109)
  7. 使用nginx记日志    (阅读:5078)
  8. 大于2GB的Listener.log和运行超过198天的主机上的Oracle实例    (阅读:4873)
  9. 在 shell 脚本里打日志    (阅读:4784)
  10. Sentry: 错误日志集中管理    (阅读:4356)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1