• Log4j打印日志


    Log4j

    什么是Log4j

    • Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件
    • 我们也可以控制每一条日志的输出格式;
    • 通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
    • 通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

    1. 配置maven,引入jar包

    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>
    

    2. 配置log4j的配置文件

     其配置文件名为log4j.properties,需要手动在java/resources下创建,如果建在其他位置,idea这个工具将无法识别(如果无法识别后面会介绍怎么解决)。下面介绍该配置文件的几个基本配置项。

    a. 日志的输出的目的地

    形式 描述
    org.apache.log4j.ConsoleAppender 控制台
    org.apache.log4j.FileAppender 文件
    org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件
    org.apache.log4j.RollingFileAppender 文件大小到达指定尺寸的时候产生一个新的文件
    org.apache.log4j.WriterAppender 将日志信息以流格式发送到任意指定的地方

    b. Layout:日志输出格式

    形式 描述
    org.apache.log4j.HTMLLayout 以HTML表格形式布局
    org.apache.log4j.PatternLayout 可以灵活地指定布局模式
    org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
    org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等等信息

    c. 格式化日志信息

    采用类似C语言中的printf函数的打印格式格式化日志信息

    形式 描述
    %d 输出日志时间点的日期或时间,可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS}
    %t 输出产生该日志事件的线程名
    %p 优先级 DEBUG/INFO/ERROR
    %c 所属类的全名(包括包名)
    %l 发生的位置,在某个类的某行
    %m 输出代码中指定的讯息,如log(message)中的message
    %n 输出一个换行符号

    案例

     案例使用如下的配置信息:

    ### set log levels ###
    log4j.rootLogger = DEBUG,Console,File
    
    ###  输出到控制台  ###
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.Target=System.out
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}]-%l:%m%n
    
    ### 输出到日志文件 ###
    log4j.appender.File=org.apache.log4j.RollingFileAppender
    log4j.appender.File.File=${project}src\main\resources\app.log
    log4j.appender.File.MaxFileSize=10MB
    log4j.appender.File.Threshold=ALL
    log4j.appender.File.layout=org.apache.log4j.PatternLayout
    log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}][%c]%m%n
    

    3. 使用Log4j

    public class UserMapperTest {
    
        public static final Logger log = Logger.getLogger(UserMapperTest.class);
    
        @Test
        public void test() {
    
    
            SqlSession sqlSession = MybatisUtils.getSqlSession();
    
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
            List<User> userList = mapper.getUserList();
    
            log.debug("debug----sw");
            log.error("error----sw");
    
            for (User user : userList) {
                System.out.println(user);
            }
    
            sqlSession.close();
    
        }
        
    
    }
    

    结果如下

  • 相关阅读:
    webService客户端搭建(三)
    webService服务器端搭建(二)
    electron 编译 sqlite3避坑指南---尾部链接有已经编译成功的sqlite3
    解决网页中Waiting (TTFB)数据加载过慢的问题
    Node-sqlite3多字段插入数据问题
    win上使用nvm管理node版本
    centos系统设置局域网静态IP
    将win平台上的mysql数据复制到linux上报错Can't write; duplicate key in table
    win上配置nginx
    Nodejs解决所有跨域请求
  • 原文地址:https://www.cnblogs.com/shangwei/p/15262434.html
Copyright © 2020-2023  润新知