Log4j配置与使用

摘要:
Log4j实际上是Java社区的标准日志解决方案。它使用起来相对简单。

log4j是Java社区事实上的日志标准解决方案。使用起来比较简单。

一. 简单使用

1.下载jar包放到lib文件夹,并加入到build path中;

2.编写log4j.properties文件,放到classpath目录下;

### set log levels ###
log4j.rootLogger = debug ,  stdout ,  D ,  E

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{1}:%L - %m%n

### 输出到日志文件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log_
log4j.appender.D.DatePattern = yyyy-MM-dd'.log'
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 保存异常信息到单独文件 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File = logs/error_ 
log4j.appender.D.DatePattern = yyyy-MM-dd'.log'
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

3.使用

private Logger logger = Logger.getLogger(this.getClass());

logger.debug("");

logger.error("", e);

说明:在Java项目和Java web项目下是类似的,唯一的区别在于日志文件的位置:

1.在Java项目中,配置的日志文件路径是当前项目在workspace下得相对路径(如上述文件的配置)

2.可以在Java代码中制定配置文件的位置

    InputStream input = Thread.CurrentThread.getClass().getClassLoader()
                                .getResourceAsStream("log4j.properties");
    PropertyConfigurator.configure(input);
    Logger logger = Logger.getLogger(Thread.CurrentThread.getClass());
    logger.debug("load log4j property file");

二. Java web项目中配置日志文件的位置的方法

1.如上述配置文件内容,无法找到日志文件

2.绝对路径

log4j.appender.D.File = D:apache-tomcat/webapps/TestLog/logs/log_1.log

3.使用已有JVM变量

log4j.appender.D.File = ${user.home}/logs/log_1.log

4.配置监听器

a.创建监听器

package com.log.listener;

public class Log4jListener implements ServletContextListener {

    public static final String LOG4J_DIR_KEY = "log4jDir";

    public void contextDestroyed(ServletContextEvent event) {
          System.getProperties().remove(LOG4J_DIR_KEY);
    }

    public void contextInitialized(ServletContextEvent event) {
        String log4jDir = event.getServletContext().getRealPath("/");
        System.setProperties(LOG4J_DIR_KEY, log4jDir);
    }
}

b.配置web.xml

<listener>
    <listener-class>com.log.listener.Log4jListener</listener-class>
</listener>

c.log4j.properties配置

log4j.appender.D.File = ${log4jDir}/logs/log_1.log

5.使用Spring提供的监听器(未验证)

<context-param>  
    <param-name>webAppRootKey</param-name>  <!--Spring配置变量名,不可变 -->
    <param-value>webApp.root</param-value>      
  </context-param>  
 <context-param>  
  <param-name>log4jConfigLocation</param-name>  
    <param-value>classpath:log4j.properties</param-value>  
 </context-param>  
<listener>    
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>    
 </listener>  
<!-- log文件存放于tomcat_home/webapps/project_name/WEB-INF/logs/ -->

三.log4j.properties文件配置

待记录

免责声明:文章转载自《Log4j配置与使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle两表中的两列进行模糊匹配的方法深度学习七(卷积神经网络)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Systemd日志管理服务:Journald以及重要配置选项

Journald是systemd引入的用于收集和存储日志数据的系统服务。它试图使系统管理员可以在越来越多的日志消息中更轻松地找到有趣且相关的信息。为了实现此目标,日记中的主要更改之一是用为日志消息优化的特殊文件格式替换简单的纯文本日志文件。这种文件格式使系统管理员可以更有效地访问相关消息。它还为单个系统带来了数据库驱动的集中日志记录实现的某些功能。 概览s...

Electron学习笔记(十四)—— 常用api____dialog

https://www.electronjs.org/docs/api/dialog 对话框显示用于打开和保存文件、警报等的本机系统对话框。 在Electron的主线程上打开 const { dialog } = require('electron')console.log(dialog.showOpenDialog({ properties: ['ope...

Java中的日志——Java.util.logging、log4j、commons-logging

Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging。其中log4j和commons-logging都是apache软件基金会的开源项目。这三种方式的区别如下: Java.util.logging,JDK标准库中的类,是JDK 1.4 版本之后添加的日志记...

log4j2文件配置

先来一个较全的模板 <?xml version="1.0" encoding="UTF-8"?> <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置--> <!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数--&...

【转】golang socket断点续传大文件

原文:https://blog.csdn.net/luckytanggu/article/details/79830493?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&dist_request_id=132...

boost asio 异步实现tcp通讯

---恢复内容开始--- asioboost 目录(?)[-] 一前言 二实现思路 通讯包数据结构 连接对象 连接管理器 服务器端的实现 对象串行化 一、前言 boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的。而tcp通讯是项...