log4j的一些配置

a). 新建Java Project>>新建package>>新建java类;

b). import jar包(一个就够),这里我用的是log4j-1.2.14.jar,

c). 新建log4j.properties,置于project根目录下;

log4j.rootLogger=info, ServerDailyRollingFile, stdout 
log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd 
log4j.appender.ServerDailyRollingFile.File=C://logs/notify-subscription.log 
log4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout 
log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d - %m%n 
log4j.appender.ServerDailyRollingFile.Append=true

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n

 

d). 在main()中,加载log4j:

PropertyConfigurator.configure("log4j.properties");

 

e). 写个小程序测试下,好了,我们看下效果:

    

     【神马】找不到文件exception?

1). 用绝对路径,真心不推荐啊,太不优雅了;

2). 将log4j文件置于bin/目录下:

     a). 代码中,PropertyConfigurator.configure("bin/log4j.properties"); 

     b). 代码中,PropertyConfigurator.configure(ClassLoader.getSystemResource("log4j.properties"));

     c). 注意,必须位于bin直接目录下,不可位于bin更深层的目录当中。可是这究竟是为神马捏?

可参考: http://blog.sina.com.cn/s/blog_3f4755c70100jco1.html

3) 必杀技:

private static void initLog4j() {
Properties prop = new Properties();

prop.setProperty("log4j.rootLogger", "DEBUG, CONSOLE");
prop.setProperty("log4j.appender.CONSOLE", "org.apache.log4j.ConsoleAppender");
prop.setProperty("log4j.appender.CONSOLE.layout", "org.apache.log4j.PatternLayout");
prop.setProperty("log4j.appender.CONSOLE.layout.ConversionPattern", "%d{HH:mm:ss,SSS} [%t] %-5p %C{1} : %m%n");

PropertyConfigurator.configure(prop);
}

 

 

 

【2】log4j 格式详解

 

 log4j.rootLogger=日志级别,appender1,
appender2, ….

  • 日志级别:ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF,不区分大小写
  • 注意,需在控制台输入,只需将其中一个appender定义为stdout即可
  • 注意,rootLogger默认是对整个工程生效
  • 注意,如果只想对某些包操作,那么:log4j.logger.com.hutu=info, stdout,表示该日志对package com.hutu生效
  • 注意,这样做可以区分dev/线上,也可以减小性能影响:if(log.isDebugEnabled()){log.debug();}

 log4j.appender.appender1=org.apache.log4j.日志输出到哪儿

  • ConsoleAppender(控制台)
  • FileAppender(文件)
  • DailyRollingFileAppender(每天产生一个日志文件)
  • RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)
  • WriteAppender(将日志信息以流格式发送到任意指定的地方)
  • JDBCAppender(将日志信息保存到数据库中)

 log4j.appender.appender1.File=文件目录及文件

${user.home}/logs/...

 log4j.appender.appender1.MaxFileSize=最大文件大小

 log4j.appender.appender1.MaxBackupIndex=备份文件个数

  • 其中,appender1是在第一行定义过的;
  • 文件目录及文件,例如,/home/admin/logs/hutudan.log
  • 最大文件大小,例如,100KB
  • 备份文件个数,例如,1

 log4j.appender.ServerDailyRollingFile.DatePattern=日志后缀格式

  • 例如,'.'yyyy-MM-dd

 log4j.appender.appender1.layout=org.apache.log4j.日志布局格式

  • HTMLLayout(以HTML表格形式布局)
  • SimpleLayout(包含日志信息的级别和信息字符串)
  • TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
  • PatternLayout(可以灵活的指定布局格式,常用)

 log4j.appender.appender1.layout.ConversionPattern=日志输出格式

  1. 例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
  2. %c 输出日志信息所属的类的全名
  3. %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd
    HH:mm:ss },输出类似:2002-10-18- 22:10:28
  4. %f 输出日志信息所属的类的类名
  5. %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
  6. %m 输出代码中指定的信息,如log(message)中的message
  7. %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
  8. %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
  9. %r 输出自应用启动到输出该日志信息所耗费的毫秒数
  10. %t 输出产生该日志事件的线程名
  11. 可参考:http://blog.sina.com.cn/s/blog_4e4dd5570100qowy.html

 log4j.appender.ServerDailyRollingFile.Append=true

  • 例如,不解释,追加往后写便是

 总结一下:

  • Logger类:完成日志记录,设置日志信息级别
  • Appender类:决定日志去向,终端、DB、硬盘
  • Layout类:决定日志输出的样式,例如包含当前线程、行号、时间
时间: 2024-09-26 06:10:32

log4j的一些配置的相关文章

warn-启动时log4j报错,log4j应该怎么配置

问题描述 启动时log4j报错,log4j应该怎么配置 <appender name="avatarAppender" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="/data/applogs/tpfun-dealDuplicateCheck-job/logs/avatar.log" /> <

使用Log4j为项目配置日志输出应用详解以及示例演示的实现分析_java

Log4j组件构成  Log4j由三个重要的组件构成: 1.日志信息的优先级(Logger) 2.日志信息的输出目的地(Appender) 3.日志信息的输出格式(Layout). 概要: 日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来指定这条日志信息的重要程度: 日志信息的输出目的地指定了日志将打印到控制台还是文件中: 而输出格式则控制了日志信息的显示内容. Log4j介绍 Log4j是 Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信

Grails中log4j日志的配置

Grails采用Log4j记录日志信息,Log4j的配置信息写在config.groovy文件中. 一.Grails 1.1 可以为不同的包下面的代码指定不同的日志级别,如: log4j = { // 设置控制器和GSP页面的级别为error error 'org.codehaus.groovy.grails.web.servlet', // controllers 'org.codehaus.groovy.grails.web.pages' // GSP // 设置插件中的日志级别为warn

Log4j配置文件以及配置方法

Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器 和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以 创建出Log4J的运行环境.Log4j的配置文件是一个叫做Log4j.properties的文件 . log4j.properties文件: #newhappy log4j.properties start log4j.rootLogger=DEBUG,myConsole,myLogFile #console appen

log4j与log4j.properties的配置

摘要: 一.配置步骤 1.  在应用程序中使用log4j 2.  把log4j-*.*jar放入CLASSPATH变量中 3.  新建一个配置文件log4j.properties,放于bin文件下 二.配置log4j.properties 新建一个配置文件log4j.properties: log4j.rootLogger=WARN, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.s

log4j用poolman配置数据库连接池的问题

问题描述 我的项目用log4j记录日志,用poolman来配置数据库连接池.现在是这样一个问题:数据库的连接信息在poolman.xml中配置,我想对poolman.xml中的数据库连接信息进行加密.但是不知道在什么地方进行解密,保证能正确连接到数据库.也可以理解为动态修改数据库连接信息. 解决方案 解决方案二:自己顶一下,菜鸟诚心请教各路大牛解决方案三: 解决方案四:这个是最好的,你看看,希望对你能有所帮助!!解决方案五:引用3楼xmt1139057136的回复: 这个是最好的,你看看,希望对

maven与log4j之间的配置,log4j如何配置到web项目根目录下最简单方案

  maven是个奇葩,和log4j居然也有不兼容的时候~~   我在引用poi的jar包的时候,它自己依赖到了log4j.1.2.13.jar包,这个jar包木有起到让全局都引用的效果,我在配置log4j的日志输出到项目根目录的时候,发现此jar包不被maven认可...反正不知道什么原因,maven就是死活报错,编译失败,1.2.14和1.2.15都不行!!!这不科学!!   报错信息:   13-3-11 下午02时50分17秒: [WARN] Missing POM for apache

Log4j使用及配置

  日志管理往往在项目中起着非常重要的作用,日志信息便于我们分析程序的执行情况,比较常用的日志工具有logging和log4j,当然还有其他很多种.为了实现日志的统一管理和配置,继而出现了slf4j来统一logging和log4j的接口.slf4j并不是用来做日志工作的,他是在对外提供logging和log4j的一个统一接口,程序只需要调用slf4j的接口不需要关系是哪种日志工具在发挥作用.而slf4j则是根据程序引用的jar包来觉定具体使用哪种日志工具.今天我们主要讲解log4j的使用及配置.

log4j日志配置详解

文章出处为 http://george5814.github.io/2016/10/09/log4j-config.html 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.W