Log4j.xml&&logback.xml配置

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



打赏

取消

感谢您的支持!

扫码支持
扫码支持