繁体   English   中英

在单行日志中使用log4j打印className,方法名称和exceptiopn的行号

[英]Print className, method name and line number of exceptiopn using log4j in single line log

我想使用log4j在单行中打印类名,方法名和异常行号。

为此,我在看。 http://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout

我想以下列格式登录:

2015-03-03 16:18:30,480测试log4j java.lang.NullPointerException com.test.Piyush main 40

但我在新的方面得到了所有的东西。

2015-03-03 16:18:30,480 Testing for for log4j java.lang.NullPointerException
    at com.test.Piyush.main(Piyush.java:40)
  java.lang.NullPointerException
    at com.test.Piyush.main(Piyush.java:40)
 java.lang.NullPointerException
    at com.test.Piyush.main(Piyush.java:40)
 java.lang.NullPointerException
    at com.test.Piyush.main(Piyush.java:40)

使用Log4j配置:

log4j.logger.com.myLogger=INFO, mylogFile
log4j.appender.mylogFile=org.apache.log4j.RollingFileAppender
log4j.appender.mylogFile.File=logs/infibeam.log
log4j.appender.mylogFile.MaxFileSize=10000KB
log4j.appender.mylogFile.MaxBackupIndex=20
log4j.appender.mylogFile.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.mylogFile.layout.ConversionPattern=%d %m %throwable{short.className}  %throwable{"short.methodName"} %throwable{"short.lineNumber"} %throwable{short.message}

您可以扩展org.apache.log4j.Layout类并覆盖public String format(LoggingEvent event)方法以生成所需的任何输出格式。

然后使用自定义布局在log4j.properties文件中定义appender。

自定义布局类:

public class MyCustomLayout extends Layout {

    @Override
    public void activateOptions()
    {
    }

    @Override
    public String format(LoggingEvent event) {
        //Your formatting code goes here
        //You can access all information in event and generate the format you want
        String output = "Your custome log format";

        return output;
    }

    @Override
    public boolean ignoresThrowable() {
        return false;
    }
}

在log4.properties文件中使用自定义布局

log4j.appender.myappender.layout=MyCustomLayout

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM