敲代码中很不注意写日志,虽然明白很重要。今天碰到记录日志,需要根据内容分别输出到不同的文件。

感觉最详细:http://blog.csdn.net/azheng270/article/details/2173430/

喜欢博客园的日志风格,第一篇参考文章就是它:http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html

写好的模板,直接修改就可以,虽然不满足我的需求:http://blog.csdn.net/rsun1/article/details/8212263

这个解决了我的需求:http://www.jb51.net/article/45525.htm

最后解决:

 1 log4j.rootLogger=warn,stdout, file
 2 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 3 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 4 log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
 5 
 6 # Output to the File
 7 log4j.appender.file=org.apache.log4j.RollingFileAppender
 8 log4j.appender.file.MaxFileSize=102400KB
 9 log4j.appender.file.MaxBackupIndex=100
10 log4j.appender.file.File=log4j/jfinal.log
11 log4j.appender.file.layout=org.apache.log4j.PatternLayout
12 log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH\:mm\:ss}%n[%p]-[Thread\: %t]-[%C.%M()]\: %m%n
13 
14 
15 #Output to the operation file 
16 #eg: private static Logger logger1 = Logger.getLogger("operation");
17 log4j.logger.operation=DEBUG,operation
18 log4j.appender.operation=org.apache.log4j.RollingFileAppender
19 log4j.appender.operation.MaxFileSize=102400KB
20 log4j.appender.operation.MaxBackupIndex=100
21 log4j.appender.operation.File=log4j/userOperation.log
22 log4j.appender.operation.layout=org.apache.log4j.PatternLayout
23 log4j.appender.operation.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH\:mm\:ss}%n[%p]-[Thread\: %t]-[%C.%M()]\: %m%n
24 
25 
26 
27 #Output to the login file 
28 #eg: private static Logger logger1 = Logger.getLogger("visit");
29 log4j.logger.visit=DEBUG,login
30 log4j.appender.login=org.apache.log4j.RollingFileAppender
31 log4j.appender.login.MaxFileSize=102400KB
32 log4j.appender.login.MaxBackupIndex=100
33 log4j.appender.login.File=log4j/visit.log
34 log4j.appender.login.layout=org.apache.log4j.PatternLayout
35 log4j.appender.login.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH\:mm\:ss}%n[%p]-[Thread\: %t]-[%C.%M()]\: %m%n

前面一个是jfinal自带的格式化,关于具体的配置不去研究,根据最后一篇参考文章,设置了两个非rootLogger的日志输出。

下面来自以上几篇参考,作为备份:

  1. 分类记录日志:java自定义日志输出文件(log4j日志文件输出多个自定义日志文件

  2. 减小] 类型:转载
     
    打印日志的在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别、打印形式和日志的输出路径,下面看一个示例吧
     
     

    log4j输出多个自定义日志文件

    如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?

    先看一个常见的log4j.properties文件,它是在控制台和test.log文件中记录日志:

     


    log4j.rootLogger=DEBUG, stdout, logfile 

     

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n 

    log4j.appender.logfile=org.apache.log4j.RollingFileAppender
    log4j.appender.logfile.File=log/test.log
    log4j.appender.logfile.MaxFileSize=128MB
    log4j.appender.logfile.MaxBackupIndex=3
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

     

    如果在同一类中需要输出多个日志文件呢?其实道理是一样的,先在Test.java中定义:

     


    private static Log logger1 = LogFactory.getLog("mylogger1");

     

    private static Log logger2 = LogFactory.getLog("mylogger2");

     


    log4j.properties中配置如下:

     


    log4j.logger.mylogger1=DEBUG,test1
    log4j.appender.test1=org.apache.log4j.FileAppender
    log4j.appender.test1.File=log/test1.log
    log4j.appender.test1.layout=org.apache.log4j.PatternLayout
    log4j.appender.test1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

     

    log4j.logger.mylogger2=DEBUG,test2
    log4j.appender.test2=org.apache.log4j.FileAppender
    log4j.appender.test2.File=log/test2.log
    log4j.appender.test2.layout=org.apache.log4j.PatternLayout
    log4j.appender.test2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

     

    还有一个问题,就是这些自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的,如何能只让它们输出到自己指定的日志中呢?别急,这里有个开关:

    log4j.additivity. mylogger1 = false

    它用来设置是否同时输出到log4j.rootLogger所配置的日志中,设为false就不会输出到其它地方了。

    但是这种方式有个小缺陷,那就是打印的日志中类名只能是mylogger或者mylogger2。

    2 动态配置路径
    若程序需要的日志路径需要不断的变化,而又不可能每次都去改配置文件,此时可以利用环境变量来解决。

    log4j的配置如下:

     


    log4j.rootLogger=DEBUG,INFOLOG,DEBUGLOG

     

    #info log
    log4j.appender.INFOLOG =org.apache.log4j.DailyRollingFileAppender
    log4j.appender.INFOLOG.File= ${log.dir}/${log.info.file}
    log4j.appender.INFOLOG.DatePattern=.yyyy-MM-dd
    log4j.appender.INFOLOG.Threshold=INFO
    log4j.appender.INFOLOG.layout=org.apache.log4j.PatternLayout
    log4j.appender.INFOLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n 

    #debug log
    log4j.appender.DEBUGLOG =org.apache.log4j.RollingFileAppender
    log4j.appender.DEBUGLOG.File= ${log.dir}/${log.debug.file}
    log4j.appender.DEBUGLOG.Threshold=DEBUG
    log4j.appender.DEBUGLOG.MaxFileSize=128MB
    log4j.appender.DEBUGLOG.MaxBackupIndex=3
    log4j.appender.DEBUGLOG.layout=org.apache.log4j.PatternLayout
    log4j.appender.DEBUGLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n

     

    此时,在使用log打印日志之前,需要利用System定义日志的输出路径和文件名的环境变量:

     


    System.setProperty(“log.dir”, logDir);

     

    System.setProperty(“log.info.file”, infoLogFileName);

    System.setProperty(“log.debug.file”, debugLogFileName);

     

    附:Pattern参数的格式含义

    %c 输出日志信息所属的类的全名

    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2013-8-19- 22:10:28

    %f 输出日志信息所属的类的类名

    %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行

    %m 输出代码中指定的信息,如log(message)中的message

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

    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推

    %r 输出自应用启动到输出该日志信息所耗费的毫秒数

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

     

    模板文件:

     

    log4j经典配置,不看后悔

    分类: IDE 工具插件 JAVA EE

    很多屌丝都觉得log4j不好用,因为它不输出到IDE的控制台,哈哈,其实都是配置惹的祸,下面看我怎么一步步配置到控制台的,

    log4j的输出级别和输出模式相信屌丝们都知道的,这里不多说了,直接看代码注释:

     

    # All,TRACE,DEBUG,INFO,WARN,ERROR,FITAL,OFF

    #全局项目日志配置

    log4j.rootLogger=ERROR

    #指定的包下所有的日志(只输出项目com包下的日志)

    log4j.logger.com=DEBUG,yin,dailly_rolling_file

    #指定输出级别不受全局管理
    log4j.additivity.com=false


    # 输出到控制台
    log4j.appender.yin = org.apache.log4j.ConsoleAppender
    log4j.appender.yin.layout = org.apache.log4j.PatternLayout
    log4j.appender.yin.layout.ConversionPattern = %n%d [%p]  [%m]  [%c] %M()[%L] %n


    # 输出到文件
    log4j.appender.file = org.apache.log4j.FileAppender
    log4j.appender.file.File = C\:\\logs\\log.log
    log4j.appenile.file.Append = true
    log4j.appender.file.layout = org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n


    #输出到大小滚动文件(100表示备份文件个数)
    log4j.appender.rolling_file = org.apache.log4j.RollingFileAppender
    log4j.appender.rolling_file.Threshold = ERROR
    log4j.appender.rolling_file.File = C\:\\logs\\log_rolling.log
    log4j.appenile.rolling_file.Append = true
    log4j.appenile.rolling_file.MaxFileSize = 10KB
    log4j.appenile.rolling_file.MaxBackupIndex = 100
    log4j.appender.rolling_file.layout = org.apache.log4j.PatternLayout
    log4j.appender.rolling_file.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n


    # 输出到按日期滚动文件
    log4j.appender.dailly_rolling_file = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.dailly_rolling_file.File = C\:\\logs\\log_daily_rolling.log
    log4j.appender.dailly_rolling_file.DatePattern = .yyyy-MM-dd
    log4j.appender.dailly_rolling_file.layout=org.apache.log4j.PatternLayout
    log4j.appender.dailly_rolling_file.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss,SSS} [%c]-[%p] %m%n
     

    参数解析:

    【1】从零开始

     

    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,不区分大小写
    • stdout即可
    • 注意,rootLogger默认是对整个工程生效
    • 注意,如果只想对某些包操作,那么:log4j.logger.com.hutu=info, stdout,表示该日志对package com.hutu生效
    • 注意,这样做可以区分dev/线上,也可以减小性能影响:if(log.isDebugEnabled()){log.debug();}

    使用log4j配置不同文件输出不同内容 log4j.appender.appender1=org.apache.log4j.日志输出到哪儿

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

    使用log4j配置不同文件输出不同内容 log4j.appender.appender1.File=文件目录及文件

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

    使用log4j配置不同文件输出不同内容 log4j.appender.appender1.MaxFileSize=最大文件大小

    使用log4j配置不同文件输出不同内容 log4j.appender.appender1.MaxBackupIndex=备份文件个数

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

    使用log4j配置不同文件输出不同内容 log4j.appender.ServerDailyRollingFile.DatePattern=日志后缀格式

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

    使用log4j配置不同文件输出不同内容 log4j.appender.appender1.layout=org.apache.log4j.日志布局格式

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

    使用log4j配置不同文件输出不同内容 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

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

    使用log4j配置不同文件输出不同内容 总结一下:

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

 

 

最详细:

分类: JAVA

 来自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.html

Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。

1. 配置文件
Log4J配置文件的基本格式如下:

使用log4j配置不同文件输出不同内容#配置根Logger
使用log4j配置不同文件输出不同内容log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …
使用log4j配置不同文件输出不同内容
使用log4j配置不同文件输出不同内容#配置日志信息输出目的地Appender
使用log4j配置不同文件输出不同内容log4j.appender.appenderName  =  fully.qualified.name.of.appender.class 
使用log4j配置不同文件输出不同内容  log4j.appender.appenderName.option1  =  value1 
使用log4j配置不同文件输出不同内容  … 
使用log4j配置不同文件输出不同内容  log4j.appender.appenderName.optionN  =  valueN 
使用log4j配置不同文件输出不同内容
使用log4j配置不同文件输出不同内容#配置日志信息的格式(布局)
使用log4j配置不同文件输出不同内容log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class 
使用log4j配置不同文件输出不同内容  log4j.appender.appenderName.layout.option1  =  value1 
使用log4j配置不同文件输出不同内容  … 
使用log4j配置不同文件输出不同内容  log4j.appender.appenderName.layout.optionN  =  valueN 


其中 [level] 是日志输出级别,共有5级:

使用log4j配置不同文件输出不同内容FATAL       0  
使用log4j配置不同文件输出不同内容ERROR      3  
使用log4j配置不同文件输出不同内容WARN       4  
使用log4j配置不同文件输出不同内容INFO         6  
使用log4j配置不同文件输出不同内容DEBUG      7 
使用log4j配置不同文件输出不同内容

Appender 
为日志输出目的地,Log4j提供的appender有以下几种:
使用log4j配置不同文件输出不同内容org.apache.log4j.ConsoleAppender(控制台),
使用log4j配置不同文件输出不同内容org.apache.log4j.FileAppender(文件),
使用log4j配置不同文件输出不同内容org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
使用log4j配置不同文件输出不同内容org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
使用log4j配置不同文件输出不同内容org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

Layout:日志输出格式,Log4j提供的layout有以下几种:

 

使用log4j配置不同文件输出不同内容org.apache.log4j.HTMLLayout(以HTML表格形式布局),
使用log4j配置不同文件输出不同内容org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
使用log4j配置不同文件输出不同内容org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
使用log4j配置不同文件输出不同内容org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)


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

使用log4j配置不同文件输出不同内容    %m   输出代码中指定的消息
使用log4j配置不同文件输出不同内容  %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
使用log4j配置不同文件输出不同内容  %r   输出自应用启动到输出该log信息耗费的毫秒数 
使用log4j配置不同文件输出不同内容  %c   输出所属的类目,通常就是所在类的全名 
使用log4j配置不同文件输出不同内容  %t   输出产生该日志事件的线程名 
使用log4j配置不同文件输出不同内容  %n   输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” 
使用log4j配置不同文件输出不同内容  %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss ,SSS},输出类似:2002年10月18日  22 : 10 : 28 , 921 


2. 在代码中初始化Logger: 
1)在程序中调用BasicConfigurator.configure()方法:给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG
2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;
3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;
4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

3. 为不同的 Appender 设置日志输出级别:
当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是BUG!?那就慢慢去找吧。
这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改AppenderThreshold 就能实现,比如下面的例子:

[配置文件]

使用log4j配置不同文件输出不同内容 ### set log levels ###
使用log4j配置不同文件输出不同内容log4j.rootLogger = debug ,  stdout ,  D ,  E
使用log4j配置不同文件输出不同内容
使用log4j配置不同文件输出不同内容### 输出到控制台 ###
使用log4j配置不同文件输出不同内容log4j.appender.stdout = org.apache.log4j.ConsoleAppender
使用log4j配置不同文件输出不同内容log4j.appender.stdout.Target = System.out
使用log4j配置不同文件输出不同内容log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
使用log4j配置不同文件输出不同内容log4j.appender.stdout.layout.ConversionPattern =  %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
使用log4j配置不同文件输出不同内容
使用log4j配置不同文件输出不同内容### 输出到日志文件 ###
使用log4j配置不同文件输出不同内容log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
使用log4j配置不同文件输出不同内容log4j.appender.D.File = logs/log.log
使用log4j配置不同文件输出不同内容log4j.appender.D.Append = true
使用log4j配置不同文件输出不同内容log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的日志
使用log4j配置不同文件输出不同内容log4j.appender.D.layout = org.apache.log4j.PatternLayout
使用log4j配置不同文件输出不同内容log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
使用log4j配置不同文件输出不同内容
使用log4j配置不同文件输出不同内容### 保存异常信息到单独文件 ###
使用log4j配置不同文件输出不同内容log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
使用log4j配置不同文件输出不同内容log4j.appender.D.File = logs/error.log ## 异常日志文件名
使用log4j配置不同文件输出不同内容log4j.appender.D.Append = true
使用log4j配置不同文件输出不同内容log4j.appender.D.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
使用log4j配置不同文件输出不同内容log4j.appender.D.layout = org.apache.log4j.PatternLayout
使用log4j配置不同文件输出不同内容log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

[代码中使用] 

 

}


运行一下,看看异常信息是不是保存在了一个单独的文件error.log中

 

 

 

 

  } 
 }

相关文章: