Java开发中的日志框架:slf4j、log4j、logback

SLF4J不提供具体实现,可以理解为一个接口层面的框架,底层框架要用log4j或logback来实现。

使用log4j:

添加maven依赖:

		<!-- log4j2,使用log4j2,需要log4j-api、log4j-core、log4j、slf4j-api -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<version>2.8.2</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.7</version>
		</dependency>
		
		<!-- slf4j-log4j -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.7</version>

在类路径(如src/main/resources)下添加log4j.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' >

	<!-- 控制台输出 -->
    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    	<!-- 输出日志样式布局 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p [%t] %C:%M - %m%n" />
        </layout>
    </appender>
    
	<!-- 所有日志文件输出,到达100MB产生新的文件,最多100个 -->
    <appender name="ALL-FILE" class="org.apache.log4j.RollingFileAppender">
    	<!-- 文件位置 -->
        <param name="File" value="./logs/all/sys-all-log.log" />
        <!-- 最大生成文件个数(默认1) -->  
        <param name="MaxBackupIndex" value="100" />
        <!-- 一个文件最大大小(默认10MB) -->
        <param name="MaxFileSize" value="100MB" />
        <!-- 输出日志样式布局 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p [%t] %C:%M - %m%n" />
        </layout>
    </appender>
    
   	<!-- 错误日志文件输出,每天生成一个新的文件 -->
    <appender name="ERROR-FILE" class="org.apache.log4j.DailyRollingFileAppender">
    	<!-- 文件位置 -->
        <param name="File" value="./logs/error/sys-error-log.log" />
        <!-- 前一天文件的后缀 -->
        <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
        <!-- 输出日志样式布局 -->
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p [%t] %C:%M - %m%n" />
        </layout>
        <!-- 过滤器设置输出的级别-->     
        <filter class="org.apache.log4j.varia.LevelRangeFilter">     
            <param name="levelMin" value="error" />     
            <param name="levelMax" value="error" />     
            <param name="AcceptOnMatch" value="true" />     
        </filter>     
    </appender>
    
   	<!-- 日志策略 -->
    <category name="org.hibernate">
        <priority value="debug" />
    </category>
    <category name="java.sql">
        <priority value="debug" />
    </category>

    <!-- 默认控制器root -->
    <root>
        <priority value ="info"/>
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="ALL-FILE" />
        <appender-ref ref="ERROR-FILE" />
    </root>

</log4j:configuration>

这个配置是在控制台输出,同时把所有日志保存到一个文件,同时把error错误日志单独保存到一个文件。


使用logback:

添加maven依赖:

		<!-- 使用logback,需要slf4j-api和logback-classic -->
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.2.3</version>
		</dependency>

在类路径(如src/main/resources)下添加logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="300 seconds" debug="false">

	<!-- 格式 -->
	<property name="LOG_FORMAT" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5level [%thread] %class.%method\\(%F:%L\\) - %msg%n" />
	<!-- 生成文件根目录 -->
	<property name="LOG_HOME" value="./logs" />
	
	<!-- 控制台输出 -->
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<Encoding>UTF-8</Encoding>
		<!-- 布局 -->
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} %-5level [%thread] %C:%M - %msg%n</pattern>
		</layout>
	</appender>
	
	<!-- 日志分级别分开保存 -->
	<!-- 所有日志 -->
	<appender name="ALL-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<Encoding>UTF-8</Encoding>
		<encoder charset="UTF-8">
            <pattern>${LOG_FORMAT}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/all/sys_all_log_%d{yyyyMMdd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>100</maxHistory>
        </rollingPolicy>
	</appender>
	
	<!-- ERROR日志 -->
	<appender name="ERROR-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 	    <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> -->
<!-- 	      	<level>ERROR</level> -->
<!-- 	    </filter> -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>DENY</onMatch>
		</filter> 
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>WARN</level>
			<onMatch>DENY</onMatch>
		</filter> 
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
		</filter> 
		<Encoding>UTF-8</Encoding>
		<encoder charset="UTF-8">
            <pattern>${LOG_FORMAT}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/error/sys_error_log_%d{yyyyMMdd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>100</maxHistory>
        </rollingPolicy>
	</appender>

	<!-- 默认控制器 -->
	<root level="INFO">
		<appender-ref ref="ALL-FILE" /> 
		<appender-ref ref="ERROR-FILE" /> 
    	<appender-ref ref="CONSOLE" /> 
	</root>
	
</configuration>  

这个配置是在控制台输出,同时把所有日志保存到一个文件,同时把error错误日志单独保存到一个文件。

以上两份xml是比较通用的了,若有别的需求可以自行百度进行改动,请大家参考。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值