常用log4j配置

常用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
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
<?xmlversion="1.0"encoding="GB2312"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
 
<log4j:configurationxmlns:log4j = "http://jakarta.apache.org/log4j/">
 
    <appendername = "com.unmi.all"class = "org.apache.log4j.RollingFileAppender">
 
      <!-- 设置 appender Name:com.unmi.all和输出方式:org.apache.log4j.RollingFileAppender -->
       <paramname = "File"value = "E:/study/log4j/all.output.log"/ ><!-- 设置File参数:日志输出文件名 -->
       <paramname = "Append"value = "false"/ ><!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
       <paramname = "MaxBackupIndex"value = "10"/ >
       <layoutclass = "org.apache.log4j.PatternLayout">
           <paramname = "ConversionPattern"value = "%p (%c:%L)- %m%n" / ><!-- 设置输出文件项目和格式 -->
       </layout>
    </appender>
 
    <appendername = "com.unmi.xyz"class = "org.apache.log4j.RollingFileAppender">
       <paramname = "File"value = "E:/study/log4j/xyz.output.log"/ >
       <paramname = "Append"value = "true"/ >
       <paramname = "MaxFileSize"value = "10240"/ > <!-- 设置文件大小 -->
       <paramname = "MaxBackupIndex"value = "10"/ >
       <layoutclass = "org.apache.log4j.PatternLayout">
           <paramname = "ConversionPattern"value = "%p (%c:%L)- %m%n" / >
       </layout>
    </appender>
 
    <loggername = "unmi.log"> <!-- 设置包名限制,即unmi.log域及以下的日志均输出到下面对应的 appender 中 -->
       <levelvalue = "debug"/ ><!-- 设置级别 -->
       <appender-refref = "com.unmi.xyz"/ ><!-- 与前面的配置的 appender name 相对应 -->
    </logger>
 
    <root> <!-- 设置接收所有输出的 appender -->
       <appender-refref = "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;
 
publicclass Log4jApp {
   publicstatic 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 应用的绝对路径。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值