`
Sev7en_jun
  • 浏览: 1225625 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
84184fc0-d0b6-3f7f-a3f0-4202acb3caf5
Apache CXF使用s...
浏览量:111306
社区版块
存档分类
最新评论

◆▲常用两种log4j配置方式(详细)▲◆

阅读更多

FROM: http://unmi.cc/log4j-common-config

 

 

单独指定某个包或类的输出文件方式:

 

 

log4j.logger.com.xxx.action= INFO,JobLog  //com.xxx.action 可以为具体的类也可以是包

 

log4j.appender.JobLog=org.apache.log4j.RollingFileAppender

 

 

#log4j.appender.JobLog.Threshold=INFO

log4j.appender.JobLog.Append=true

log4j.appender.JobLog.File=D:/logs/xxx.log

log4j.appender.JobLog.Encoding=UTF-8

log4j.appender.JobLog.MaxFileSize=2048KB

log4j.appender.JobLog.MaxBackupIndex=30

log4j.appender.JobLog.DatePattern='.'yyyy-MM-dd HH

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

log4j.appender.JobLog.layout.ConversionPattern=[%p] %c{1}:%L [%t %d{yyyy-MM-dd HH:mm:ss}] %m%n

 

言归正传:

 

 

常用log4j配置,一般可以采用两种方式,.properties和.xml,下面举两个简单的例子:

最简单的配置是只要取下面的log4j.properties文件中带下划线的四行就行,它完成日志输出到控制台。

一、log4j.properties 

### 设置com.unmi域对应的级别INFO,DEBUG,WARN,ERROR和输出地A1,A2 ## 
log4j.category.com.unmi = ERROR,A1 
log4j.category.com.unmi = INFO,A2  
  
### 一般把上面两行写如下方式,统一控制日志输出,再用log4j.logger设置包独立的输出级别 ## 
log4j.rootLogger = DEBUG,A1 
#com.unmi.special为包名,配置为ERROR代表只把当前包中的ERROR级别日志输出
log4j.logger.com.unmi.special = ERROR
  
### 设置输出地A1,为ConsoleAppender(控制台) ## 
log4j.appender.A1 = org.apache.log4j.ConsoleAppender 
  
### 设置A1的输出布局格式PatterLayout,(可以灵活地指定布局模式)## 
log4j.appender.A1.layout = org.apache.log4j.PatternLayout 
  
### 配置日志输出的格式## 
log4j.appender.A1.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n 
  
### 设置输出地A2到文件(文件大小到达指定尺寸的时候产生一个新的文件)## 
log4j.appender.A2 = org.apache.log4j.RollingFileAppender 
  
### 文件位置## 
log4j.appender.A2.File = E:/study/log4j/log.html 
  
### 文件大小## 
log4j.appender.A2.MaxFileSize = 500KB  
  
log4j.appender.A2.MaxBackupIndex = 1 
  
##指定采用html方式输出 
log4j.appender.A2.layout = org.apache.log4j.HTMLLayout 
二、log4j.xml
 <?xml version="1.0" encoding="GB2312" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
  
<log4j:configuration xmlns:log4j = "http://jakarta.apache.org/log4j/" > 
  
    <appender name = "com.unmi.all" class = "org.apache.log4j.RollingFileAppender" > 
  
      <!-- 设置 appender Name:com.unmi.all和输出方式:org.apache.log4j.RollingFileAppender -->
       <param name = "File" value = "E:/study/log4j/all.output.log" / ><!-- 设置File参数:日志输出文件名 -->
       <param name = "Append" value = "false" / ><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
       <param name = "MaxBackupIndex" value = "10" / > 
       <layout class = "org.apache.log4j.PatternLayout" > 
           <param name = "ConversionPattern" value = "%p (%c:%L)- %m%n" / ><!-- 设置输出文件项目和格式 -->
       </layout > 
    </appender > 
  
    <appender name = "com.unmi.xyz" class = "org.apache.log4j.RollingFileAppender" > 
       <param name = "File" value = "E:/study/log4j/xyz.output.log" / > 
       <param name = "Append" value = "true" / > 
       <param name = "MaxFileSize" value = "10240" / > <!-- 设置文件大小 -->
       <param name = "MaxBackupIndex" value = "10" / > 
       <layout class = "org.apache.log4j.PatternLayout" > 
           <param name = "ConversionPattern" value = "%p (%c:%L)- %m%n" / > 
       </layout > 
    </appender > 
  
    <logger name = "unmi.log" > <!-- 设置包名限制,即unmi.log域及以下的日志均输出到下面对应的 appender 中 -->
       <level value = "debug" / ><!-- 设置级别 -->
       <appender-ref ref = "com.unmi.xyz" / ><!-- 与前面的配置的 appender name 相对应 -->
    </logger > 
  
    <root > <!-- 设置接收所有输出的 appender -->
       <appender-ref ref = "com.unmi.all" / ><!-- 与前面的 appender name 相对应 -->
    </root > 
  
</log4j:configuration> 


三、配置文件加载方法:
对于properties文件,一般都不用手工去加载,由Log4j第一次初始化时自动就加载了
 import  org.apache.log4j.Logger; 
import  org.apache.log4j.PropertyConfigurator; 
import  org.apache.log4j.xml.DOMConfigurator; 
  
public class Log4jApp { 
   public static void main(String[] args) { 
        DOMConfigurator.configure("E:/study/log4j/log4j.xml"); //加载.xml文件 
       //PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加载.properties文件 
  
        Logger log = Logger.getLogger("com.unmi.test"); 
       log.info("测试"); 
    } 
} 
四、项目使用log4j

在web应用中,可以将配置文件的加载放在一个单独的servlet中,并在web.xml中配置该servlet在应用启动时候加载。对于在多人项目中,可以给每一个人设置一个输出通道,这样在每个人在构建Logger时,用自己的域名称,让调试信息输出到自己的log文件中。
五、常用输出格式
%c   列出logger名字空间的全称,如加上{<层数>}表示出从最内层算起的指定层数的名字空间
%X  按MDC(Mapped Diagnostic Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。
%p  日志信息级别
%d   %d{<日期格式>}:日志信息产生时间,使用ISO8601定义的日期格式
%C   日志信息所在地(全限类名)
%m   产生的日志具体信息
%n    输出日志信息换行
%F 显示调用logger的源文件名
%l     输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
%L    显示调用logger的代码行
%M   显示调用logger的方法名
%r     显示从程序启动时到记录该条日志时已经经过的毫秒数
%t     输出产生该日志事件的线程名
%% 显示一个百分号

--------------------------------------------------------------------------------
补充:在配置文件中可以用变量用于引用系统属性,如 
log4j.appender.A2.File = ${user.home}/${app.name}.log
如果你在启动程序时加了 -Dapp.name=UnmiLog4jTest  JVM 参数,或者在初始化 Log4j 之前,往 System.getProperties() 中 put 了 "app.name" 属性为 UnmiLog4jTest,那么就会输出日志文件到用户主目录/UnmiLog4jTest.log。user.home 属性一般都存在于系统属性中,你也可以在程序中改变它。
如果在 web.xml 中初始化 log4j,你可以在 log4j 的配置文件中更轻松的取到 web 应用的绝对路径。

 

 

web.xml中可以使用spring的Log4jConfigListener自动加载

 

 

<!-- log4j config start! -->
 <context-param>
  <param-name>webAppRootKey</param-name>
  <param-value>webName.root</param-value>
 </context-param>
 <context-param>
  <param-name>log4jConfigLocation</param-name>
  <param-value>/WEB-INF/log4j.properties</param-value>
 </context-param>
 <context-param>
  <param-name>log4jRefreshInterval</param-name>
  <param-value>60000</param-value>
 </context-param>
 <listener>
  <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 </listener>
 

 

 

1、配置根Logger其语法为:
  log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
    level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
  appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
    例如:log4j.rootLogger=info,A1,B2,C3
  
  
2、配置日志信息输出目的地,其语法为:
  log4j.appender.appenderName = fully.qualified.name.of.appender.class   //
     "fully.qualified.name.of.appender.class" 可以指定下面五个目的地中的一个:
           1.org.apache.log4j.ConsoleAppender(控制台)
           2.org.apache.log4j.FileAppender(文件)
           3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
           4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
           5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
             
1.ConsoleAppender选项
                     Threshold=WARN:指定日志消息的输出最低层次。
                     ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
                     Target=System.err:默认情况下是:System.out,指定输出控制台
              
2.FileAppender                     Threshold=WARN:指定日志消息的输出最低层次。
                     ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
                     File=mylog.txt:指定消息输出到mylog.txt文件。
                     Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
           
  3.DailyRollingFileAppender 选项
                     Threshold=WARN:指定日志消息的输出最低层次。
                     ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
                     File=mylog.txt:指定消息输出到mylog.txt文件。
                     Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
                     DatePattern='.'yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:
                     1)'.'yyyy-MM: 每月
                     2)'.'yyyy-ww: 每周 
                     3)'.'yyyy-MM-dd: 每天
                     4)'.'yyyy-MM-dd-a: 每天两次
                     5)'.'yyyy-MM-dd-HH: 每小时
                     6)'.'yyyy-MM-dd-HH-mm: 每分钟
             4.RollingFileAppender 选项
                     Threshold=WARN:指定日志消息的输出最低层次。
                     ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
                     File=mylog.txt:指定消息输出到mylog.txt文件。
                     Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
                     MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
                     MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

 

 







log全方位配置及Logger.getLogger()和LogF ...



在Web应用中利用Spring配置log4j



Tomcat自定义日志配置流程
分享到:
评论

相关推荐

    log4j 详细配置参考

    log4j 详细配置 log4j 详细配置 log4j 详细配置 log4j 详细配置

    log4j配置和加载方法

    ### Log4j配置与加载方法详解 Log4j是一款由Apache出品的日志记录工具,它提供了灵活的日志级别控制和多样化的日志输出方式,广泛应用于Java应用的开发中。本文将深入解析log4j的配置与加载机制,帮助开发者更好地...

    Log4j配置文件详细说明

    本篇将详细介绍Log4j的配置文件及其常用属性,旨在帮助初学者快速掌握Log4j的配置方法。 首先,Log4j的配置文件通常是`log4j.properties`或`log4j.xml`,用于定义日志输出的行为。这里我们主要讨论基于文本格式的`...

    tomcat下的log4j日志配置

    本文将详细介绍两种常见的 Log4j 配置方式:Tomcat 级别的统一日志管理和每个 web 应用分别配置 Log4j,并着重介绍第二种方法的具体步骤。 #### 一、Tomcat 级别的统一日志管理 这种方法适用于希望对整个 Tomcat ...

    常用log4j配置常用log4j配置

    本文将深入解析《常用log4j配置》中的关键知识点,包括配置文件的格式、基本配置项的含义及其应用场景。 ### 标题:常用log4j配置 #### 配置文件格式 Log4j支持多种配置文件格式,包括.properties和.xml,其中....

    老生常谈Log4j和Log4j2的区别(推荐)

    Log4j通过一个.properties文件作为主配置文件,而Log4j2则弃用了这种方式,采用的是.xml、.json或者.jsn文件来配置。这种变化可能是技术发展的一个必然性,因为.properties文件的可阅读性确实有所不足。 核心JAR包 ...

    log4j常用配置详解

    本文将详细介绍两种常见的log4j配置方式:通过`.properties`文件和`.xml`文件进行配置。 **1.1 设置日志级别** 首先,我们可以看到配置文件中设置了`com.unmi`域对应的不同日志级别,包括`ERROR`, `INFO`等,并...

    SpringBoot框架配置log4j和log4j2的配置代码

    Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...

    log4j实用配置扩展

    log4j的主要优势在于其灵活性和可扩展性,允许用户通过配置文件自定义日志记录的方式,无需修改应用程序代码。 #### 二、日志记录的目的 在应用程序中记录日志主要有以下三个目的: 1. **监视代码中变量的变化...

    SSM整合中的Log4j日志的配置详情

    本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助读者更好地理解 Log4j 的使用。 一、Log4j 的基本概念 Log4j 是 Apache 软件基金会提供的一个日志记录工具,能够记录和输出项目中的日志信息。Log4j 的核心组件...

    log4j的详细配置

    Log4J使用类似于C语言printf函数的格式化方式来打印日志信息,常用的格式化参数包括: - `%m`:输出代码中指定的日志消息。 - `%p`:输出日志级别。 - `%r`:输出自应用启动以来的毫秒数。 - `%c`:输出日志所在的...

    log4j-1.2.17的jar包以及依赖包,还有一份log4j的配置文件,输出到控制台和文件夹两种配置

    这是Log4j使用的一种配置格式,基于Java Properties格式。配置文件决定了日志信息如何输出、输出到哪里,以及日志的级别等关键设置。 **三、Log4j配置详解** 1. **日志级别**: 包括DEBUG、INFO、WARN、ERROR和...

    常用log4j的配置详解

    Log4j支持多种配置文件格式,常见的有`.properties`和`.xml`两种。 ##### 1. log4j.properties配置示例解析 在`.properties`格式下,配置文件中的每一行都代表一个属性键值对。下面我们将详细分析提供的示例代码: ...

    log4j常用配置和Demo

    了解和掌握Log4j的常用配置对于Java开发人员来说至关重要,因为它可以帮助我们调试代码、追踪错误以及监控系统运行状态。下面,我们将深入探讨Log4j的基本概念、配置选项以及一个简单的Demo。 ### 1. Log4j基本概念...

    Log4j配置说明.rar,Log4j配置说明.rar

    Log4j配置说明.rarLog4j配置说明.rarLog4j配置说明.rarLog4j配置说明.rar,Log4j配置,Log4j Log4j配置说明.rarLog4j配置说明.rarLog4j配置说明.rarLog4j配置说明.rar,Log4j配置,Log4j

    log4j日志配置以及配置文件详解

    接下来,`log4j配置说明.txt`文件通常会提供更详细的解释和示例,包括如何配置不同的appender(如FileAppender、RollingFileAppender等),如何定义不同logger的级别,以及如何使用自定义的error handler和filter。...

    log4j.properties配置详解

    Log4j支持多种配置方式,其中.properties文件配置是最常用的一种。通过.properties文件,我们可以灵活地设置日志记录器的级别、输出目的地(Appender)以及日志信息的布局(Layout)。 #### 二、Log4j配置文件格式详解 ...

    Log4j2学习log4j2.xml配置模板

    Log4j2 配置模板学习笔记 Log4j2 是 Java 语言中一种流行的日志记录工具,它提供了灵活的日志记录管理功能。下面我们将学习 Log4j2 配置模板的使用和配置。 引入 Log4j2 依赖 在使用 Log4j2 之前,需要在 Maven ...

    Log4j2结合Slf4j配置使用

    Log4j2 结合 Slf4j 配置使用 Log4j2 是一个功能强大且广泛使用的日志记录工具,它提供了灵活的日志记录机制和高性能的日志记录能力。Slf4j 则是一个简单的日志记录门面,提供了统一的日志记录接口。今天,我们将...

Global site tag (gtag.js) - Google Analytics