log4j、logback汇总

log4j 参考 配置Log4j(很详细) 和 Log4j按级别输出到不同文件

主要是重写 DailyRollingFileAppender 


logback配置参考

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="true">

	<property resource="application.properties" />

	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<encoder charset="UTF-8">
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
		</encoder>
	</appender>

	<appender name="FILE-ERROR"	class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${log.root.folder}/error.log.%d{yyyy-MM-dd}</fileNamePattern>
			<maxHistory>15</maxHistory>
		</rollingPolicy>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level> 
      		<onMatch>ACCEPT</onMatch>
      		<onMismatch>DENY</onMismatch>
		</filter>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
		</encoder>
	</appender>

	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${log.root.folder}/info.log.%d{yyyy-MM-dd}</fileNamePattern>
			<maxHistory>15</maxHistory>
		</rollingPolicy>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level> 
      		<onMatch>ACCEPT</onMatch>
      		<onMismatch>DENY</onMismatch>
		</filter>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
		</encoder>
	</appender>
	    
	<root level="INFO">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
		<appender-ref ref="FILE-ERROR" />
	</root>

</configuration>


*********** 20161102 补充 ***********

logback提供了3种filter:LevelFilter、ThresholdFilter和EvalutorFilter。同时支持自定义filter。

比如为了方便日志调阅,我将项目包下面的日志独立出来。

import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;

/**
 * Description:
 * Auth:Paris
 * Date:Nov 2, 2016
**/
public class ProjectFilter extends Filter<ILoggingEvent>{

	@Override
	public FilterReply decide(ILoggingEvent event) {
		if (event.getLoggerName().equals("xxx")){
			return FilterReply.ACCEPT;
		}else {
			return FilterReply.DENY;
		}
	}

}
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.filter.Filter;
import ch.qos.logback.core.spi.FilterReply;

/**
 * Description:
 * Auth:Paris
 * Date:Nov 2, 2016
**/
public class ProjectDenyFilter extends Filter<ILoggingEvent>{

	@Override
	public FilterReply decide(ILoggingEvent event) {
		if (event.getLoggerName().equals("xxx")){
			return FilterReply.DENY;
		}else {
			return FilterReply.ACCEPT;
		}
	}

}

logger配置如下

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="true">

	<property resource="application.properties" />

	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder charset="UTF-8">
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
			</pattern>
		</encoder>
	</appender>

	<appender name="FILE-DEBUG"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${log.root.folder}/debug.log.%d{yyyy-MM-dd}
			</fileNamePattern>
			<maxHistory>15</maxHistory>
		</rollingPolicy>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>DEBUG</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
			</pattern>
		</encoder>
	</appender>

	<appender name="FILE-ERROR"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${log.root.folder}/error.log.%d{yyyy-MM-dd}
			</fileNamePattern>
			<maxHistory>15</maxHistory>
		</rollingPolicy>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
			</pattern>
		</encoder>
	</appender>

	<appender name="FILE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${log.root.folder}/info.log.%d{yyyy-MM-dd}
			</fileNamePattern>
			<maxHistory>15</maxHistory>
		</rollingPolicy>
		<filter
			class="xxx.ProjectDenyFilter" />
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
			</pattern>
		</encoder>
	</appender>

	<appender name="PROJECT_IFLE"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter
			class="xxx.ProjectFilter" />
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>INFO</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${log.root.folder}/dispatcher.log.%d{yyyy-MM-dd}
			</FileNamePattern>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
		</encoder>
	</appender>

	<root level="INFO">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
		<appender-ref ref="FILE-ERROR" />
		<appender-ref ref="FILE-DEBUG" />
	</root>

	<logger name="xxx" level="INFO">
		<appender-ref ref="PROJECT_IFLE" />
	</logger>
</configuration>



猜你喜欢

转载自blog.csdn.net/u013275741/article/details/51144874