011-项目中用到的日志

来源:互联网 发布:淘宝客机器人破解版 编辑:程序博客网 时间:2024/05/20 12:46

1. LogManager.java

import java.io.PrintWriter;
import java.io.StringWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.core.joran.spi.JoranException;
import ch.qos.logback.core.util.StatusPrinter;

public class LogManager {
// 初始化日志配置
public static boolean init() {
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
lc.reset();

try {
configurator.doConfigure("config/logback-test.xml");
} catch (JoranException e) {
e.printStackTrace();
StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
return false;
}

return true;
}

private static Logger logger;
public static Logger getLogger(Class<?> clazz) {
return (logger = LoggerFactory.getLogger(clazz));
}

public static void printStackTrace(Exception e) {
if(logger != null ) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
logger.error(sw.toString());
}
}

}


2. logback-test.xml

<configuration scan="true" scanPeriod="60 seconds" debug="false">

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-2level %logger{64}%msg%n</pattern>
</encoder>
<target>System.out</target>
</appender>

 
  <appender name="info-all" 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>${user.dir}/log/info.log</file>   
  <append>true</append> 
    <encoder>   
      <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-2level %logger{64}%msg%n</pattern>
    </encoder> 
    <prudent>true</prudent>  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">   
      <fileNamePattern>${user.dir}/log/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>   
      <maxHistory>1</maxHistory>    
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
  </appender>   

<appender name="warn-all" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
     <level>WARN</level>
     <onMatch>ACCEPT</onMatch>
     <onMismatch>DENY</onMismatch>
   </filter>
  <file>${user.dir}/log/warn.log</file>   
  <append>true</append> 
    <encoder>   
      <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-2level %logger{64}%msg%n</pattern>
    </encoder> 
    <prudent>true</prudent>  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">   
      <fileNamePattern>${user.dir}/log/warn.%d{yyyy-MM-dd}.%i.log</fileNamePattern>   
      <maxHistory>1</maxHistory>    
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
  </appender>
   
  <appender name="error-all" class="ch.qos.logback.core.rolling.RollingFileAppender">  
  <filter class="ch.qos.logback.classic.filter.LevelFilter">
     <level>ERROR</level>
     <onMatch>ACCEPT</onMatch>
     <onMismatch>DENY</onMismatch>
   </filter>
  <file>${user.dir}/log/error.log</file>   
  <append>true</append> 
    <encoder>   
      <pattern>%d{yyyy-MM-dd HH:mm:ss:SSS} [%thread] %-2level %logger{64}%msg%n</pattern>
    </encoder> 
    <prudent>true</prudent>  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">   
      <fileNamePattern>${user.dir}/log/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>   
      <maxHistory>1</maxHistory>    
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
  </appender>

<root level="info">
<appender-ref ref="STDOUT" />
<appender-ref ref="info-all" />
<appender-ref ref="warn-all" />
<appender-ref ref="error-all" />
</root>

</configuration>

原创粉丝点击