首先,在项目中的classes 中新建立一个log4j.properties文件即可;

在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义。定义步骤就是对Logger、Appender及Layout的分别使用。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是java properties(key=value)【Java特性文件(键=值)】。(这里只说明properties文件)

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:指定可以产生的滚动文件的最大数。

3、配置日志信息的格式

其语法为:

  1). log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class

"fully.qualified.name.of.layout.class" 可以指定下面4个格式中的一个:

1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),

   2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

   3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

   4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

1.HTMLLayout 选项

LocationInfo=true:默认值是false,输出java文件名称和行号

Title=my app file: 默认值是 Log4J Log Messages.

2.PatternLayout 选项

ConversionPattern=%m%n :指定怎样格式化指定的消息。

3.XMLLayout 选项

LocationInfo=true:默认值是false,输出java文件和行号

2). log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

这里需要说明的就是日志信息格式中几个符号所代表的含义:

   -X号: X信息输出时左对齐;

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,

%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%r: 输出自应用启动到输出该log信息耗费的毫秒数

%c: 输出日志信息所属的类目,通常就是所在类的全名

%t: 输出产生该日志事件的线程名

%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。

%%: 输出一个"%"字符

%F: 输出日志消息产生时所在的文件名称

%L: 输出代码中的行号

%m: 输出代码中指定的消息,产生的日志具体信息

%n: 输出一个回车换行符,Windows平台为"

",Unix平台为"

"输出日志信息换行

可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:

1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。

2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。

3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。

4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉

比较详细的例子

log4j.rootLogger=INFO,consoleAppender,logfile,MAIL

log4j.addivity.org.apache=true

#ConsoleAppender,控制台输出

#FileAppender,文件日志输出

#SMTPAppender,发邮件输出日志

#SocketAppender,Socket日志

#NTEventLogAppender,Window NT日志

#SyslogAppender,

#JMSAppender,

#AsyncAppender,

#NullAppender

#文件输出:RollingFileAppender

#log4j.rootLogger = INFO,logfile

log4j.appender.logfile = org.apache.log4j.RollingFileAppender

log4j.appender.logfile.Threshold = INFO

# 输出以上的INFO信息

log4j.appender.logfile.File = INFO_log.html

#保存log文件路径

log4j.appender.logfile.Append = true

# 默认为true,添加到末尾,false在每次启动时进行覆盖

log4j.appender.logfile.MaxFileSize = 1MB

# 一个log文件的大小,超过这个大小就又会生成1个日志 # KB ,MB,GB

log4j.appender.logfile.MaxBackupIndex = 3

# 最多保存3个文件备份

log4j.appender.logfile.layout = org.apache.log4j.HTMLLayout

# 输出文件的格式

log4j.appender.logfile.layout.LocationInfo = true

#是否显示类名和行数

log4j.appender.logfile.layout.Title =title:\u63d0\u9192\u60a8\uff1a\u7cfb\u7edf\u53d1\u751f\u4e86\u4e25\u91cd\u9519\u8bef

#html页面的 < title >

############################## SampleLayout ####################################

# log4j.appender.logfile.layout = org.apache.log4j.SampleLayout

############################## PatternLayout ###################################

# log4j.appender.logfile.layout = org.apache.log4j.PatternLayout

# log4j.appender.logfile.layout.ConversionPattern =% d % p [ % c] - % m % n % d

############################## XMLLayout #######################################

# log4j.appender.logfile.layout = org.apache.log4j.XMLLayout

# log4j.appender.logfile.layout.LocationInfo = true #是否显示类名和行数

############################## TTCCLayout ######################################

# log4j.appender.logfile.layout = org.apache.log4j.TTCCLayout

# log4j.appender.logfile.layout.DateFormat = ISO8601

#NULL, RELATIVE, ABSOLUTE, DATE or ISO8601.

# log4j.appender.logfile.layout.TimeZoneID = GMT - 8 : 00

# log4j.appender.logfile.layout.CategoryPrefixing = false ##默认为true 打印类别名

# log4j.appender.logfile.layout.ContextPrinting = false ##默认为true 打印上下文信息

# log4j.appender.logfile.layout.ThreadPrinting = false ##默认为true 打印线程名

# 打印信息如下:

#2007 - 09 - 13 14 : 45 : 39 , 765 [http - 8080 - 1 ] ERROR com.poxool.test.test - error成功关闭链接

###############################################################################

#每天文件的输出:DailyRollingFileAppender

#log4j.rootLogger = INFO,errorlogfile

log4j.appender.errorlogfile = org.apache.log4j.DailyRollingFileAppender

log4j.appender.errorlogfile.Threshold = ERROR

log4j.appender.errorlogfile.File = ../logs/ERROR_log

log4j.appender.errorlogfile.Append = true

#默认为true,添加到末尾,false在每次启动时进行覆盖

log4j.appender.errorlogfile.ImmediateFlush = true

#直接输出,不进行缓存

# ' . ' yyyy - MM: 每个月更新一个log日志

# ' . ' yyyy - ww: 每个星期更新一个log日志

# ' . ' yyyy - MM - dd: 每天更新一个log日志

# ' . ' yyyy - MM - dd - a: 每天的午夜和正午更新一个log日志

# ' . ' yyyy - MM - dd - HH: 每小时更新一个log日志

# ' . ' yyyy - MM - dd - HH - mm: 每分钟更新一个log日志

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

#文件名称的格式

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

log4j.appender.errorlogfile.layout.ConversionPattern =%d %p [ %c] - %m %n %d

#控制台输出:

#log4j.rootLogger = INFO,consoleAppender

log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender

log4j.appender.consoleAppender.Threshold = ERROR

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

log4j.appender.consoleAppender.layout.ConversionPattern =%d %-5p %m %n

log4j.appender.consoleAppender.ImmediateFlush = true

# 直接输出,不进行缓存

log4j.appender.consoleAppender.Target = System.err

# 默认是System.out方式输出

#发送邮件:SMTPAppender

#log4j.rootLogger = INFO,MAIL

log4j.appender.MAIL = org.apache.log4j.net.SMTPAppender

log4j.appender.MAIL.Threshold = INFO

log4j.appender.MAIL.BufferSize = 10

log4j.appender.MAIL.From = yourmail@gmail.com

log4j.appender.MAIL.SMTPHost = smtp.gmail.com

log4j.appender.MAIL.Subject = Log4J Message

log4j.appender.MAIL.To = yourmail@gmail.com

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

log4j.appender.MAIL.layout.ConversionPattern =%d - %c -%-4r [%t] %-5p %c %x - %m %n

#数据库:JDBCAppender

log4j.appender.DATABASE = org.apache.log4j.jdbc.JDBCAppender

log4j.appender.DATABASE.URL = jdbc:oracle:thin:@ 210.51 . 173.94 : 1521 :YDB

log4j.appender.DATABASE.driver = oracle.jdbc.driver.OracleDriver

log4j.appender.DATABASE.user = ydbuser

log4j.appender.DATABASE.password = ydbuser

log4j.appender.DATABASE.sql = INSERT INTO A1 (TITLE3) VALUES ( ' %d - %c %-5p %c %x - %m%n ' )

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

log4j.appender.DATABASE.layout.ConversionPattern =% d - % c -%- 4r [ % t] %- 5p % c % x - % m % n

#数据库的链接会有问题,可以重写org.apache.log4j.jdbc.JDBCAppender的getConnection() 使用数据库链接池去得链接,可以避免insert一条就链接一次数据库

项目中添加Log4J支持的更多相关文章

  1. web项目中添加logger日志

    在项目中添加log4j.xml文件 log4j.xml文件 <?xml version="1.0" encoding="UTF-8" ?><! ...

  2. 在IntelliJ IDEA中添加框架支持时找不到Hibernate的解决办法

    问题描述 第一次在Add Frameworks support界面中添加hibernate支持的时候,异常中断,导致没有成功添加. 第二次进入Add Frameworks support窗口时,发现找 ...

  3. 在Spring项目中使用Log4j记录日志

    (1)引入log4j的jar包: 官网下载地址:http://logging.apache.org/log4j/1.2/download.html (2)在web.xml中添加log4j配置: 1 2 ...

  4. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序2>. 添加一个 ADO.NET实体数据模型,选择对应的数据库与表(Studen ...

  5. 关于如何正确地在android项目中添加第三方jar包

    在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception.error inflati ...

  6. 如何在VUE项目中添加ESLint

    如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...

  7. 在SpringBoot项目中添加logback的MDC

    在SpringBoot项目中添加logback的MDC     先看下MDC是什么 Mapped Diagnostic Context,用于打LOG时跟踪一个“会话“.一个”事务“.举例,有一个web ...

  8. VS2015 项目中 添加windows服务

    1. 在项目中添加winows服务 今天刚刚为自己的项目添加了windows服务,以服务的形式运行后台系统,为前端提供接口服务,下面说一下具体怎么为vs项目添加windows服务 2. 添加Windo ...

  9. Tomcat日志、项目中的log4j日志、e.printStackTrace()——我的日志最后到底跑哪去了?

    1.Tomcat自带日志功能,即时你的项目中有log4j也不会影响到Tomcat自己记录日志. 2.你的项目中的log4j中的日志指定打印到什么地方(控制台或者文件),便会打印到什么地方,和Tomat ...

随机推荐

  1. hbase blocksize设置,与hdfs关系

    关于如何设定数据块的大小,我们应用一段HFile源码中的注释: 我们推荐将数据块的大小设置为8KB至1MB.大的数据块比较适合顺序的查询(比如Scan),但不适合随机查询,想想看,每一次随机查询可能都 ...

  2. LiveView 0.8 RC1 could boot evidence files acquired from Win10 64bit

    The latest Windows 10 will be more and more popular in the very near future. Now let's take a look i ...

  3. Android IOS WebRTC 音视频开发总结(五六)-- 如何测试网络性能?

    本文主要介绍如何测试网络性能,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help 网络性能直接决定了视频通话效果,比如qq,很多时候我们我们觉得通 ...

  4. Java设计模式-Builder生成器模式

    概念: 生成器模式也称之为建造者模式.生成器模式的意图在于将一个复杂的构建与其表示相分离,构建与产品分离. UML: Ibuild接口清晰地反映了创建产品Product的流程. 生成器模式涉及4个关键 ...

  5. 浅谈Bootstrap自适应功能在Web开发中的应用

    随着移动端市场的强势崛起,web的开发也变得愈发复杂,对于个体开发者来说,自己开发的网站,在电脑.手机.Pad等上面都要有正常的显示以及良好的用户体验.如果每次都要自己去调整网页去匹配各个不同的客户端 ...

  6. s3c6410_时钟初始化

    参考: 1)<USER'S MANUAL-S3C6410X>第三章 SYSTEM CONTROLLER 2)u-boot/board/samsumg/smdk6410/lowlevel_i ...

  7. Vue.js学习 Item13 – 指令系统与自定义指令

    基础 除了内置指令,Vue.js 也允许注册自定义指令.自定义指令提供一种机制将数据的变化映射为 DOM 行为. 可以用 Vue.directive(id, definition) 方法注册一个全局自 ...

  8. nginx+php与apache+php性能对比

    测试工具http_load相同的动态页面测试,相同的硬件资源,相同并发,相同请求数量的前提下,nginx+php比apache+php的性能要 差,而且如果请求的压力大于硬件资源的承受能力,nginx ...

  9. PHP通过字符串调用函数

    1. call_user_func function a($b,$c){ echo $b; echo $c; } call_user_func('a', "111","2 ...

  10. 【Apache】2.4.6版本的安装和配置