您的位置:首页 > 编程语言 > Java开发

Java log4j日志使用

2016-03-17 11:24 351 查看
1. 日志配置

web.xml配置文件:

<servlet>

  <servlet-name>LogServer</servlet-name>

  <servlet-class>sys.LogServer</servlet-class>

  <init-param>

    <param-name>log4jpropfile</param-name>

    <param-value>/WEB-INF/classes/log4j.properties</param-value>

  </init-param>

  <load-on-startup>1</load-on-startup>

</servlet>

 

log4j.properties配置文件:

log4j.rootLoger=ERROR

log4j.logger.Trace=TRACE,R0

log4j.logger.Debug=DEBUG,R1

log4j.logger.Info=INFO,R2

log4j.logger.Error=ERROR,R3

 

log4j.appender.R0=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R0.Append=true

log4j.appender.R0.File=/logs/trace

log4j.appender.R0.DatePattern=yyyy-MM-dd'.log'

log4j.appender.R0.layout=org.apache.log4j.PatternLayout

log4j.appender.R0.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} :%m%n

 

log4j.appender.R1=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R1.Append=true

log4j.appender.R1.File=/logs/debug

log4j.appender.R1.DatePattern=yyyy-MM-dd'.log'

log4j.appender.R1.layout=org.apache.log4j.PatternLayout

log4j.appender.R1.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} :%m%n

 

log4j.appender.R2=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R2.Append=true

log4j.appender.R2.File=/logs/info

log4j.appender.R2.DatePattern=yyyy-MM-dd'.log'

log4j.appender.R2.layout=org.apache.log4j.PatternLayout

log4j.appender.R2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} :%m%n

 

log4j.appender.R3=org.apache.log4j.DailyRollingFileAppender

log4j.appender.R3.Append=true

log4j.appender.R3.File=/logs/error

log4j.appender.R3.DatePattern=yyyy-MM-dd'.log'

log4j.appender.R3.layout=org.apache.log4j.PatternLayout

log4j.appender.R3.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} :%m%n

 

2. 日志类

日志类LogServer.java,由servlet加载

public class LogServer extends extends HttpServlet {

  private static String strContextPath=null;

  private static String strAppPath=null;

  private static String strClassesPath=null;

  private static String strLogPath=null;

 

  private static Logger logTrace=null;

  private static Logger logDebug=null;

  private static Logger logInfo=null;

  private static Logger logError=null;

 

  public static int LEVEL_INFO=10;

  public static int LEVEL_DEBUG=20;

  public static int LEVEL_TRACE=30;

 

  //servlet初始化方法

  public void init() throws ServletException {

    super.init();

    initLog4j();

  }

  protected void initLog4j() {

    strContextPath=getServletContext().getContextPath();

    StringBuffer path=new StringBuffer(64);

    strAppPath=getServletContext().getRealPath(File.separator);

    path.append(strAppPath);

    if(strAppPath.lastIndexOf(File.separator) != strAppPath.length()-1) {

      path.append(File.separator);

    }

    path.append("WEB-INF");

    path.append(File.separator);

    path.append("classes");

    strClassesPath=path.toString();

    //日志文件存放目录

    path.delete(0,path.length());

    path.append(File.separator);

    path.append("logs");

    File logRootPath=new File(path.toString());

    if(!logRootPath.exists()) {

      logRootPath.mkdirs();//创建目录

    }

    strLogPath=path.toString();

    //加载log4j日志配置文件

    path.delete(0,path.length());

    path.append(strAppPath);

    path.append(getInitParameter("log4jpropfile"));

    PropertyConfigurator.configure(path.toString());

    path.delete(0, path.length());

  }

 

  //记录日志方法

  public static void printByLevel(int logLevel, String log) {

    if(logLevel<LEVEL_DEBUG) {

      getLogInfo().info(log);

    }else if(logLevel<LEVEL_TRACE) {

      getLogDebug().info(log);

    }else{

      getLogTrace().info(log);

    }

  }

  public static Logger getLogTrace() {

    if(logTrace==null) {

      logTrace=Logger.getLogger("Trace");

    }

    return logTrace;

  }

  public static Logger getLogDebug() {

    if(logDebug==null) {

      logDebug=Logger.getLogger("Debug");

    }

    return logDebug;

  }

  public static Logger getLogInfo() {

    if(logInfo==null) {

      logInfo=Logger.getLogger("Info");

    }

    return logInfo;

  }

  public static Logger getLogError() {

    if(logError==null) {

      logError=Logger.getLogger("Error");

    }

    return logError;

  }

 

  //打印异常日志

  public static void appendErr(Exception e) {

    StringWriter sw=new StringWriter(1024*4);

    e.printStackTrace(new PrintWriter(sw));

    getLogError().error(sw.toString());

  }

 

}

 

3. 日志记录

日志记录的调用:

int logLevel=LogServer.LEVEL_INFO;

LogServer.printByLevel(logLevel, "日志内容");

 

异常日志调用:

LogServer.appendErr(e);

e为程序中捕获的异常,为Exception类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: