• Java日志使用slf4j 配置log4j后,有日志文件 但日志文件内容为空


    SLF4J的全称是Simple Logging Facade for Java,即简单日志门面。

    SLF4J并不是具体的日志框架,而是作为一个简单门面服务于各类日志框架,如java.util.logging, logback和log4j。

    SLF4J支持{}作为占位符,等价于C语言中的%s,而不必再进行字符串的拼接,效率有显著的提。

    1.slf4j使用

    引入包 slf4j-api-1.6.2.jar

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class App{
    
        private static Logger logger = LoggerFactory.getLogger(App.class);
    
        public static void main(String[] args) {
    
            logger.info("info hello world");
            logger.error("error hello world");
            logger.debug("debug hello world");
            //输出参数比较多时可以使用占位符  (推荐此方法,不要使用字符串拼接)
            logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
        }
    }


    2.与log4j集成

    依赖包:slf4j-api-1.6.2.jar,slf4j-log4j12-1.6.2.jar ,log4j-1.2.17.jar
    常见问题,配置log4j后,有日志文件,但日志文件内容为空。
    原因:
    a) slf4j 可能有多个绑定实现包,如slf4j-log4j12 与slf4j-jdk14 同时存在,删除一个包即可
    b) 确认 sl4j-api与slf4j-log4j12版本是否一至,二者版本要保持一至才可以
    c) 指定日志文件具体位置 log4j.appender.D.File=d:/debug.log

    3.在src目录中创建log4j.properties (如果是maven项目,在src/main/resources目录中创建log4j.properties)

    log4j.properties 

    ### 设置###
    log4j.rootLogger=DEBUG,stdout,D,E,I
    ### 输出信息到控制抬 ###
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
    ### 输出DEBUG 级别以上的日志文件设置 ###
    log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.D.File=debug.log
    log4j.appender.D.Append=false
    log4j.appender.D.layout=org.apache.log4j.PatternLayout
    log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    ### 输出ERROR 级别以上的日志文件设置 ###
    log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.E.File=error.log
    log4j.appender.E.Append=true
    log4j.appender.E.Threshold=ERROR
    log4j.appender.E.layout=org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
    ### 输出INFO 级别以上的日志文件设置 ###
    log4j.appender.I=org.apache.log4j.RollingFileAppender
    log4j.appender.I.File=info.log
    log4j.appender.I.Append=true
    log4j.appender.I.Threshold=INFO
    log4j.appender.File.MaxFileSize=100KB
    log4j.appender.I.MaxBackupIndex=15
    log4j.appender.I.layout=org.apache.log4j.PatternLayout
    log4j.appender.I.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
  • 相关阅读:
    oracle 对应的JDBC驱动 版本
    Java Web中如何访问WEB-INF下的XML文件
    网站制作越简单越好(一):css样式命名规范
    HTTPClient以WebAPI方式发送formData数据上传文件
    NetCore(依赖注入)
    JS a标签 onClick问题
    NetCore的配置管理(1)
    Centos 系统安装NetCore SDK命令以及一系列操作(3)
    Centos 系统安装NetCore SDK命令以及一系列操作(2)
    Centos 系统安装NetCore SDK命令以及一系列操作(1)
  • 原文地址:https://www.cnblogs.com/liuxm2017/p/9759806.html
Copyright © 2020-2023  润新知