您的位置:

java日志记录器文档介绍内容,java系统业务日志表记录

本文目录一览:

4. Logging

SpringBoot 内部使用 Commons Logging 日志记录器但是保留的对外扩展功能。默认提供 Java Util Logging、Log4j2、Logback。为Java Util日志记录、Log4J2和Logback提供了默认配置。在每种情况下,日志记录器都预先配置为使用控制台输出,并提供可选的文件输出。

默认,如果你使用 starters,使用 logback 进行日志记录。还包括适当的Logback路由,以确保使用Java Util Logging,Commons Logging,Log4J或SLF4J的从属库均能正常工作

默认日志输出内容如下所示:

默认的日志配置将信息打印到控制台。默认情况下会记录 ERROR,WARN,INFO 级别的消息。你可以在启动应用程序时使用 --debug 命令来启动 debug 模式。

当启用 debug 模式时,一组核心记录器会配置打印出更多的信息。Enabling the debug mode does not configure your application to log all messages with DEBUG level.

或者你可以选择启用 trace 模式,通过命令行的 --trace 或者 在 application.properties 中添加 trace=true。Doing so enables trace logging for a selection of core loggers (embedded container, Hibernate schema generation, and the whole Spring portfolio).

如果你的 命令行知识 ANSI 编码,可以输出带有颜色的日志以便提高可读性。你可以使用 spring.output.ansi.enabled = ALWAYS|DETECT|NEVER 的值来重写自动检测。

颜色编码是通过使用%clr转换字来配置的。在其最简单的形式中,转换器根据日志级别对输出进行着色,如下面的示例所示:

The following table describes the mapping of log levels to colors:

或者,您可以指定应该使用的颜色或样式,将其作为转换的选项提供。例如,要使文本变为黄色,请使用以下设置

The following colors and styles are supported:

-blue

-cyan

-faint

-green

-magenta

-red

-yellow

默认,SpringBoot 只将日志打印到控制台没有写到日志文件。如果你想同时写到配置文件,你需要 配置 logging.file.name 或者 logging.file.path 属性 到你的 application.properties。

The following table shows how the logging.* properties can be used together:

下列表格显示 logging.* 属性如何一起使用。

Table 4. Logging properties

和控制台输出一样,日志文件到达 10M 的时候就会进行轮转,日志文件的大小可以使用 logging.file.max-size 属性指定。日志默认会保持7天在设置 logging.file.max-history 属性之前。归档日志的总大小可以使用 logging.file.total-size-cap 属性来设置。当日志总大小超出阈值时,备份的文件将会被删除。程序启动强制删除归档日志可以使用 logging.file.clean-history-on-start 属性。

所有支持的日志系统都可以通过 Spring Environment 进行日志级别的设置。在 application.properties 中可以使用 logging.level.logger-name=level 设置日志级别,日志级别可以是 TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF. 根日志可以使用 logging.level.root 属性设置。

The following example shows potential logging settings in application.properties:

也可以通过 环境变量(Environment variables)来设置日志的级别,比如 LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUG 可以设置 org.springframework.web to DEBUG

能够将相关的日志记录器分组在一起,以便能够同时对它们进行配置,这通常是很有用的。例如,您通常可能会更改所有与Tomcat相关的日志记录程序的日志级别,但是您无法轻松记住顶级的包。

为了帮助实现这一点,Spring Boot允许您在Spring环境中定义日志组。例如,下面介绍如何通过将tomcat组添加到application.properties中来定义它

一旦定义了分组,你便可以通过分组改变分组内所有相关的日志级别。

SpringBoot 提供了下表中开箱即用的日志分组:

可以通过在类路径中包含适当的库来激活各种日志系统,还可以通过在类路径的根目录中提供适当的配置文件或在Spring环境的以下属性指定的位置提供适当的配置文件来进一步定制日志系统:logging.config。

你可以使用 org.springframework.boot.logging.LoggingSystem 属性来强制执行 SpringBoot 使用一个日志系统。它的值是一个 LoggingSystem 接口实现类的全限定名。你可以使用 none 彻底关闭 SpringBoot 的日志配置。

根据日志系统的不同会加载不同的配置文件:

为了帮助定制,将其他一些属性从Spring Environment转移到System属性,如下表所述

所有受支持的日志记录系统在解析其配置文件时都可以查阅系统属性。 有关示例,请参见spring-boot.jar中的默认配置:

SpringBoot 提供了许多扩展帮助你进行高级的配置。你可以使用这些配置在你的 logback-spring.xml 配置文件中。

The springProfile tag lets you optionally include or exclude sections of configuration based on the active Spring profiles. Profile sections are supported anywhere within the configuration element. Use the name attribute to specify which profile accepts the configuration. The springProfile tag can contain a simple profile name (for example staging) or a profile expression. A profile expression allows for more complicated profile logic to be expressed, for example production (eu-central | eu-west). Check the reference guide for more details. The following listing shows three sample profiles:

springProfile标签使您可以根据活动的 Spring profiles 文件有选择地包括或排除配置部分。在configuration元素内的任何位置都支持概要文件部分。使用name属性指定哪个配置文件接受配置。 springProfile 标签可以包含一个简单的 profile name (例如分段)或一个配置 profile expression。通过 profile expression 可以进行更复杂的配置。比如: production (eu-central | eu-west),可以参考详细说明文档 reference guide

springProperty标记使您可以从Spring Environment中公开属性以在Logback中使用,如果要访问Logback配置中的application.properties文件中的值,则这样做很有用。该标签的工作方式类似于Logback的标准property标签。但是,不是指定一个直接的值,而是指定属性的来源(来自环境)。如果需要将属性存储在本地范围以外的其他位置,则可以使用scope属性。如果需要默认值(如果未在环境中设置该属性),则可以使用defaultValue属性。 以下示例显示如何公开在Logback中使用的属性:

属性的源必须要使用小写,否则属性无法通过 relaxed rules 添加到 环境变量(Environment)

java输出日志是什么?有什么用?

如果是小程序就不是必须的了

如果是大点的程序,日志就非常有用了

日志的作用,主要在维护的时候非常有用,系统可能会出一些其名其秒的错误,这个时候如果日志做的比较详细就能很清楚的查找到错误了~~

java中如何使用log4j将记录的操作日志信息

主要是通过配置文件

1.1 Log4j 支持两种配置文件格式,一种是 XML 格式的文件,一种是 Java 特性文件    lg4j.properties (键 = 值)。

Logger 负责处理日志记录的大部分操作。 

其语法为: 

log4j.rootLogger = [ level ] , appenderName, appenderName, …

2.1 level 是日志记录的优先级,分为 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 ALL

或者自定义的级别。

2.2Log4j 建议只使用四个级别,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG

2.3通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了

INFO 级别,只有等于及高于这个级别的才进行处理,则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。

2.4 ALL: 打印所有的日志,

OFF :关闭所有的日志输出。 appenderName 就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。

配置日志信息输出目的地 Appender 负责控制日志记录操作的输出。

3.1log4j.appender.appenderName = fully.qualified.name.of.appender.class 

3.2log4j.appender.appenderName.option1 = value1 

3.3log4j.appender.appenderName.optionN = valueN

Log4j 提供的 appender

4.1org.apache.log4j.ConsoleAppender (控制台), 

4.2org.apache.log4j.FileAppender (文件), 

4.3org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件), 

4.4org.apache.log4j.RollingFileAppender

(文件大小到达指定尺寸的时候产生一个新的文件),可通过 log4j.appender.R.MaxFileSize=100KB

设置文件大小,还可通过 4.5log4j.appender.R.MaxBackupIndex=1 设置为保存一个备份文件。 

4.6org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

5.Layout

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

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

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

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

6.格式化日志信息

Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数如下:

6.1%m 输出代码中指定的消息

6.2%p 输出优先级,即 DEBUG , INFO , WARN , ERROR , FATAL

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

6.4%c 输出所属的类目,通常就是所在类的全名

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

6.6%n 输出一个回车换行符, Windows 平台为 “rn” , Unix 平台为 “n”

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

6.8%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

7.  log4j.propertie 示例文件:

log4j.rootCategory=INFO, stdout,file

7.1 定义名为 stdout 的输出端的类型

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

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

log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

7.2定义名为 file 的输出端的类型为每天产生一个日志文件。

log4j.appender.file =org.apache.log4j.DailyRollingFileAppender

log4j.appender.file.File=log.txt

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

log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

7.3指定 com.neusoft 包下的所有类的等级为 DEBUG 。可以把 com.neusoft 改为自己项目所用的包名。

log4j.logger.com.neusoft=DEBUG

7.4如果项目中没有配置 EHCache ,则配置以下两句为 ERROR 。

log4j.logger.com.opensymphony.oscache=ERROR

log4j.logger.net.sf.navigator=ERROR

8struts 配置

log4j.logger.org.apache.commons=ERROR

log4j.logger.org.apache.struts=WARN

8.1 displaytag 配置

log4j.logger.org.displaytag=ERROR

8.2  spring 配置

log4j.logger.org.springframework=DEBUG

8.3  ibatis 配置

log4j.logger.com.ibatis.db=WARN

8.4   hibernate 配置

log4j.logger.org.hibernate=DEBUG

log4j.logger.org.apache.velocity=FATAL

log4j.logger.com.canoo.webtest=WARN

java开发怎么做日志功能 就是记录用户每一步的操作具体做什么了

Java开发做日志功能是比较麻烦的,Java开发学做日志功能推荐千锋教育。千锋教育合作院校超600所,校企合作共建实验室50余个,与教育部产学合作协同育人项目累计成功立项768项,为高校举办实训近万次,组织实施各类讲座5万余场。规划教材100本,已被近500所高校选用授课教材,深受广大高校师生喜爱。

日志对于一个系统来说非常重要,查找异常信息、分析系统运行情况等都需要用到日志。所以无论是JDK还是第三方都提供了关于日志的相关工具,本文分别介绍以下几种工具,以及各种工具间的整合、原理。日志,作为行为或状态详细描述的载体,其时效性与信息丰富程度在企业安全事件分析、事件回溯和取证过程中起到重要作用。在法律层,日志也是重要的电子证据,先进的日志记录、监控和审计手段,可以帮助客户有效地减少信息破坏、信息泄露的问题,对违法行为起到一定威慑作用。

想要了解更多java开发的相关信息,推荐咨询千锋教育。千锋Java现已拥有成熟独立的项目库,项目均1:1引进大厂项目,授课采用 CREA 项目研发模型,即 Cooperation、Research、Exercise、Alliance,以项目促进高质量教学。多场景,多学科联动为学员的技能实战提供高度还原的真实演练场,充分赋能学员简历价值,打造企业直聘班,得到广大学员一致认可。

java日志

首先,在项目中的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一条就链接一次数据库