我是靠谱客的博主 大意衬衫,最近开发中收集的这篇文章主要介绍log4jxml配置,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

log4j.xml :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd">
<log4j:configuration>
    <!--输出到控制台-->
    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="DEBUG"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="|%d{yyyy-MM-dd HH:mm:ss.SSS}|%t|${PORT}|${APPNAME}| %l|%M|%p|%m%n"/>
        </layout>
    </appender>

    <!--输出到文件(info)-->
    <!--将生成“info.log.2014-06-11”这样的日志文件-->
    <appender name="fileAppenderInfo" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${catalina.base}/logs/info.log" />
        <param name="DatePattern" value=".yyyy-MM-dd" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="|%d{yyyy-MM-dd HH:mm:ss.SSS}|%t|${PORT}|${APPNAME}|%l|%M|%p|%m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="INFO" />
        </filter>
    </appender>

    <!--输出到文件(warn)-->
    <appender name="fileAppenderWarn" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${catalina.base}/logs/warn.log" />
        <param name="DatePattern" value=".yyyy-MM-dd" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="|%d{yyyy-MM-dd HH:mm:ss.SSS}|%t|${PORT}|${APPNAME}|%l|%M|%p|%m%n"/>
        </layout>

        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="WARN" />
            <param name="LevelMax" value="WARN" />
        </filter>
    </appender>

    <!--输出到文件(error)-->
    <appender name="fileAppenderError" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${catalina.base}/logs/error.log" />
        <param name="DatePattern" value=".yyyy-MM-dd" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="|%d{yyyy-MM-dd HH:mm:ss.SSS}|%t|${PORT}|${APPNAME}|%l|%M|%p|%m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="ERROR" />
        </filter>
    </appender>

    <!--屏蔽所有org.springframework.*输出的Debug(及以下)信息-->
    <logger name="org.springframework">
        <level value="WARN"></level>
    </logger>
    <!--屏蔽所有org.mybatis.*输出的Debug(及以下)信息-->
    <logger name="org.mybatis">
        <level value="WARN"></level>
    </logger>

    <root>
        <level value="INFO"/>
        <appender-ref ref="consoleAppender" />
        <appender-ref ref="fileAppenderInfo" />
        <appender-ref ref="fileAppenderWarn" />
        <appender-ref ref="fileAppenderError" />
    </root>
</log4j:configuration>

Appender日志输出器:接口,配置日志的打印级别、打印位置、打印格式等
log4j中WriterAppender类继承了抽象类AppenderSkeleton,而AppenderSkeleton抽象类又实现了Appender接口
WriterAppender:将日志信息以流格式发送到任意指定的地方
一般在log4j中实现的WriterAppender的主要用到的类包括:
1.org.apache.log4j.ConsoleAppender(日志输出到控制台)
2.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
3.org.apache.log4j.FileAppender(文件)

<!-- 输出日志到文件 -->
<appender name="fileAppender" class="org.apache.log4j.FileAppender">
    <!-- 输出文件全路径名-->
    <param name="File" value="/data/applogs/own/fileAppender.log"/>
    <!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
    <param name="Append" value="false"/>
    <param name="Threshold" value="INFO"/>
    <!--是否启用缓存,默认false-->
    <param name="BufferedIO" value="false"/>
    <!--缓存大小,依赖上一个参数(bufferedIO), 默认缓存大小8K  -->
    <param name="BufferSize" value="512"/>
    <!-- 日志输出格式 -->
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss SSS}][%c]-[%m]%n"/>
    </layout>
</appender>

4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

<!-- 输出日志到文件,当文件大小达到一定阈值时,自动备份 --><!-- FileAppender子类 -->
<appender name="rollingAppender" class="org.apache.log4j.RollingFileAppender">
    <!-- 日志文件全路径名 -->
    <param name="File" value="/data/applogs/RollingFileAppender.log" />
    <!--是否在已存在的文件追加写:默认时true,若为false则每次启动都会删除并重新新建文件-->
    <param name="Append" value="true" />
    <!-- 保存备份日志的最大个数,默认值是:1  -->
    <param name="MaxBackupIndex" value="10" />
    <!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB,默认值是:10MB -->
    <param name="MaxFileSize" value="10KB" />
    <!-- 设置日志输出的样式 -->`
    <layout class="org.apache.log4j.PatternLayout">
        <!-- 日志输出格式 -->
        <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
    </layout>
</appender>

5.org.apache.log4j.WriterAppender(可自定义日志输出位置、格式)
日志输出配置类后必选注意将配置好的name,添加到<root></root>标签内

<root>
    <level value="INFO"/>
    <appender-ref ref="consoleAppender" />
    <appender-ref ref="fileAppenderInfo" />
    <appender-ref ref="fileAppenderWarn" />
    <appender-ref ref="fileAppenderError" />
    <appender-ref ref="rollingAppender" />
</root>

日志级别
日志记录器(Logger)的行为是分等级的。分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。
log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。
注:日志记录的级别有继承性,子类会记录父类的所有的日志级别。
输出格式
log4j输出格式可以自定义配置org.apache.log4j.PatternLayout类,其中各个参数的代表含义如下:
eg:

%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MMM-dd HH:mm:ss.SSS}
%t: 输出产生该日志事件的线程名
%r: 程序启动到现在的毫秒数
%p: 日志级别(FATAL,ERROR,WARN,INFO,DEBUG)
%F: java 源文件名
%L: java 源码行数
%C/%c: java 类名,%C{1} 输出最后一个元素
%M:java 方法名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数
%m:输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行

xml配置:

<layout class="org.apache.log4j.PatternLayout">
	<param name="ConversionPattern" value="|%d{yyyy-MM-dd HH:mm:ss.SSS}|%t|${PORT}|${APPNAME}|%logger|%M|%p|%m%n"/>
</layout>

代码:

log.info("转换任务启动,开始执行...");

控制台输出

|2019-08-26 14:35:30.003|processTaskThread||| com.dhcc.datatrans.TaskProcess.processTask(TaskProcess.java:28)|processTask|INFO|转换任务启动,开始执行...

分析结果

%d: 输出日志时间点的日期或时间:2019-08-26 14:35:30.003
%t: 输出产生该日志事件的线程名:processTaskThread
%p: 输出日志级别:INFO
%M:输出java 方法名:processTask
%l: 输出日志事件的发生位置:com.dhcc.datatrans.TaskProcess.processTask(TaskProcess.java:28)
%m:输出代码中指定的消息:转换任务启动,开始执行...
%n: 输出一个回车换行符

文章参考原博客:https://blog.csdn.net/niuch1029291561/article/details/80938095

最后

以上就是大意衬衫为你收集整理的log4jxml配置的全部内容,希望文章能够帮你解决log4jxml配置所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部