Log4j.xml配置
日志配置文件,这里记一下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<!-- 输出日志到控制台 ConsoleAppender -->
<appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d][%p, (%F:%L).%M] %m%n" />
</layout>
<!--<filter class="org.apache.log4j.varia.LevelRangeFilter">-->
<!--<param name="LevelMin" value="debug" />-->
<!--<param name="LevelMax" value="info" />-->
<!--<param name="AcceptOnMatch" value="false" />-->
<!--</filter>-->
</appender>
<!-- 输出日志到文件 每天一个文件 -->
<!--输出每天的运行日志到文件SystemOut.log-->
<appender name="SystemOutFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
<!--Threshold为此级别及以上才会被输出!-->
<param name="Threshold" value="info"/>
<param name="Append" value="true" />
<param name="ImmediateFlush" value="true"/>
<param name="File" value="src/main/log/SystemOut.log"/>
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/>
<param name="encoding" value="utf-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d][%p, (%F:%L).%M] %m%n" />
</layout>
</appender>
<!-- 输出日志到文件 文件大小到达指定尺寸的时候文件会自动回滚 -->
<!-- 输出异常错误日志到文件ErrOut.log -->
<appender name="ErrOutFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="src/main/log/ErrOut.log"/>
<param name="ImmediateFlush" value="true"/>
<param name="Threshold" value="error"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="3000KB"/>
<param name="MaxBackupIndex" value="100"/>
<param name="encoding" value="utf-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d][%p, (%F:%L).%M] %m%n" />
</layout>
</appender>
<!-- 输出日志到文件 文件大小到达指定尺寸的时候文件会自动回滚 -->
<!-- 输出运行的SQL语句日志到文件SqlOut.log -->
<appender name="SqlOutFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="src/main/log/SqlOut.log"/>
<param name="ImmediateFlush" value="true"/>
<param name="Threshold" value="error"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="3000KB"/>
<param name="MaxBackupIndex" value="100"/>
<param name="encoding" value="utf-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d][%p, (%F:%L).%M] %m%n" />
</layout>
</appender>
<!--固定文件,未使用-->
<appender name="FileAppender" class="org.apache.log4j.FileAppender">
<param name="File" value="src/main/log/xx.log" />
<param name="Append" value="true" />
<!--Threshold为此级别及以上才会被输出!-->
<param name="Threshold" value="trace" />
<param name="encoding" value="utf-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d][%p, (%F:%L).%M] %m%n" />
</layout>
</appender>
<!--这个logger的设置是:举例在org.springframework包下面的所有输出日志必须级别level在info及以上级别才会被输出!-->
<!--这样可以避免输出一些spring框架的许多常见debug信息!-->
<logger name="org.springframework">
<level value="info" />
</logger>
<logger name="org.json">
<level value="ERROR" />
</logger>
<logger name="io.netty">
<level value="info" />
</logger>
<logger name="org.quartz">
<level value="ERROR" />
</logger>
<logger name="org.apache.commons">
<level value="ERROR" />
</logger>
<logger name="test.java">
<level value="error" />
</logger>
<logger name="org.slf4j" >
<level value="info"/>
</logger>
<logger name="org.apache.log4j">
<level value="info"/>
</logger>
<!-- 下面是打印 mybatis sql语句日志的配置 -->
<logger name="com.usthe.tmall.mapper">
<!-- TRACE包括SQL查询后的数据,debug不包括 -->
<level value="TRACE"/>
<appender-ref ref="SqlOutFileAppender"/>
</logger>
<!--level 为限制输出的级别,即此级别及以上的日志才会对应的输出!-->
<root>
<level value="trace" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="SystemOutFileAppender" />
<appender-ref ref="ErrOutFileAppender" />
</root>
</log4j:configuration>
日志开启
在web.xml配置(试过不配置也行,把log4j.xml放在classpath下):
<!-- log4j -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.xml</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>3000</param-value>
</context-param>
<!-- 先开启log4j再去启动spring等 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
或在项目启动时开启:
DOMConfigurator.configureAndWatch("src/config/log4j.xml");
logback-spring.xml配置
现在开始逐渐开始用springboot开发,由于springboot的默认日志是logback且其良好的支持了slf4j日志门面,这里记录下学习的logback.xml配置
在springboot框架下只需要在资源目录下配置logback-spring.xml即可
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<!-- 输出日志到控制台 ConsoleAppender -->
<appender name="ConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--<pattern>%d %p (%file:%line\)- %m%n</pattern>-->
<!--格式化输出:%d:表示日期 %thread:表示线程名 %-5level:级别从左显示5个字符宽度 %msg:日志消息 %n:是换行符-->
<pattern>1-%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 输出日志到文件 每天一个文件 -->
<!--输出每天的运行日志到文件SystemOut.log-->
<appender name="SystemOutFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>/opt/tomcat/logs/demo/SystemOut.log</file>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 归档的日志文件的路径。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>/opt/tomcat/logs/demo/SystemOut-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加方式记录日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 此日志文件记录debug及以上级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>debug</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 输出日志到文件 每天一个文件 -->
<!--输出每天的运行日志到文件SystemErrOut.log-->
<appender name="ErrOutFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>/opt/tomcat/logs/demo/err/SystemErrOut.log</file>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 归档的日志文件的路径。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>/opt/tomcat/logs/demo/err/SystemErrOut-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加方式记录日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 此日志文件记录error及以上级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 输出日志到文件 文件大小到达指定尺寸的时候文件会自动回滚 -->
<!-- 输出运行的SQL语句日志到文件SqlOut.log -->
<appender name="SqlOutFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>/opt/tomcat/logs/demo/sql/SystemSqlOut.log</file>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 归档的日志文件的路径。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
<fileNamePattern>/opt/tomcat/logs/demo/sql/SystemSqlOut-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始 -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>2MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 追加方式记录日志 -->
<append>true</append>
<!-- 日志文件的格式 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 此日志文件记录sql trace -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>trace</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--这个logger的设置是:举例在org.springframework包下面的所有输出日志必须级别level在info及以上级别才会被输出!-->
<!--这样可以避免输出一些spring框架的许多常见debug信息!-->
<logger name="org.springframework" level="info" />
<logger name="org.json" level="error"/>
<logger name="io.netty" level="info"/>
<logger name="org.slf4j" level="info"/>
<logger name="ch.qos.logback" level="info"/>
<!-- 下面是打印 mybatis sql语句日志的配置 -->
<logger name="com.usthe.demo.mapper">
<level value="debug"/>
<appender-ref ref="SqlOutFileAppender"/>
</logger>
<!-- 生产环境配置 -->
<springProfile name="production">
<root level="DEBUG">
<appender-ref ref="ErrOutFileAppender"/>
<appender-ref ref="SystemOutFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</springProfile>
<!-- 开发环境配置 -->
<springProfile name="development">
<root level="DEBUG">
<appender-ref ref="ErrOutFileAppender"/>
<appender-ref ref="SystemOutFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</springProfile>
</configuration>
转载请注明 from tomsun28