java:
package com;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Test
{
/**
* 日志记录
*/
private Logger logger = LoggerFactory.getLogger("traceInfo");
/**
* 目录信息
*/
private Logger categoryInfo = LoggerFactory.getLogger("categoryInfo");
/**
* 目录与目录的关联关系
*/
private Logger productInfo = LoggerFactory.getLogger("productInfo");
public void print()
{
// 日志记录
if (logger.isDebugEnabled())
{
logger.debug("Entry: print().");
}
categoryInfo.info("categoryInfo");
productInfo.info("productInfo");
// 日志记录
if (logger.isDebugEnabled())
{
logger.debug("Exit: print().");
}
}
/**
* @param args
*/
public static void main(String[] args)
{
new Test().print();
}
}
config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="log.path" value="E:\\crawl\\spider\\output" />
<appender name="traceInfo" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%-5level][%d{yyyy-MM-dd HH:mm:ss}][%F:%L] - %msg%n</pattern>
</encoder>
</appender>
<appender name="categoryAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>${log.path}/category.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${log.path}/category_%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>13</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>4MB</maxFileSize>
</triggeringPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="productAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<file>${log.path}/product.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/product_%i.log</fileNamePattern>
<maxHistory>90</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 200MB -->
<maxFileSize>200MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%msg%n</pattern>
</encoder>
</appender>
<logger name="categoryInfo" level="info" additivity="false">
<appender-ref ref="categoryAppender" />
</logger>
<logger name="productInfo" level="info" additivity="false">
<appender-ref ref="productAppender" />
</logger>
<root level="INFO">
<appender-ref ref="traceInfo" />
</root>
</configuration>
package com;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Test
{
/**
* 日志记录
*/
private Logger logger = LoggerFactory.getLogger("traceInfo");
/**
* 目录信息
*/
private Logger categoryInfo = LoggerFactory.getLogger("categoryInfo");
/**
* 目录与目录的关联关系
*/
private Logger productInfo = LoggerFactory.getLogger("productInfo");
public void print()
{
// 日志记录
if (logger.isDebugEnabled())
{
logger.debug("Entry: print().");
}
categoryInfo.info("categoryInfo");
productInfo.info("productInfo");
// 日志记录
if (logger.isDebugEnabled())
{
logger.debug("Exit: print().");
}
}
/**
* @param args
*/
public static void main(String[] args)
{
new Test().print();
}
}
config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="log.path" value="E:\\crawl\\spider\\output" />
<appender name="traceInfo" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%-5level][%d{yyyy-MM-dd HH:mm:ss}][%F:%L] - %msg%n</pattern>
</encoder>
</appender>
<appender name="categoryAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>${log.path}/category.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${log.path}/category_%i.log</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>13</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>4MB</maxFileSize>
</triggeringPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="productAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<file>${log.path}/product.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/product_%i.log</fileNamePattern>
<maxHistory>90</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 200MB -->
<maxFileSize>200MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%msg%n</pattern>
</encoder>
</appender>
<logger name="categoryInfo" level="info" additivity="false">
<appender-ref ref="categoryAppender" />
</logger>
<logger name="productInfo" level="info" additivity="false">
<appender-ref ref="productAppender" />
</logger>
<root level="INFO">
<appender-ref ref="traceInfo" />
</root>
</configuration>