`

关于log4j多文件打印使用技巧

    博客分类:
  • Java
阅读更多

关于log4j多文件打印使用技巧
log4j的好处在于:
1.通过修改配置文件,就可以决定log信息输出到何处(console,文件,...),是否输出。这样,在系统开发阶段可以打印详细的log信息以跟踪系统运行情况,而在系统稳定后可以关闭log输出,从而在能跟踪系统运行情况的同时,又减少了垃圾代码(System.out.println(...)等)。
2.使用log4j,需要整个系统有一个统一的log机制,有利于系统的规划。
3.log4j的使用本身很简单。但合理地规划一个系统的统一log机制需要周全的考虑。

 一、定义配置文件
 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。其实您也可以完全不使用配置文件,而是在代码中配置Log4j环境。但是,使用配置文件将使您的应用程序更加灵活。Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。下面我们介绍使用Java特性文件做为配置文件的方法:
1. 配置根Logger,其语法为:
  log4j.rootLogger = [ level ] , appenderName, appenderName, …
 其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
  2. 配置日志信息输出目的地Appender,其语法为:
        log4j.appender.appenderName = fully.qualified.name.of.appender.class
  log4j.appender.appenderName.option1 = value1
  …
  log4j.appender.appenderName.option = valueN
其中,Log4j提供的appender有以下几种:
   org.apache.log4j.ConsoleAppender(控制台)
   org.apache.log4j.FileAppender(文件)
   org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
      org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
      org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3. 配置日志信息的格式(布局),其语法为:
       log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
  log4j.appender.appenderName.layout.option1 = value1
  …
  log4j.appender.appenderName.layout.option = valueN
 其中,Log4j提供的layout有以下几种:
  org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下: %m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
  %r 输出自应用启动到输出该log信息耗费的毫秒数
  %c 输出所属的类目,通常就是所在类的全名
  %t 输出产生该日志事件的线程名
  %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

二、在代码中使用Log4j
1. 初始化logg4j
在使用log4j前,要先初始化log4j的配置文件。如果在系统的classpath中存在log4j.properties,则系统自动会找到log4j的配置文件进行初始化,如果系统所使用的配置文件不是默认的log4j.properties,或者是配置文件不在系统的classpath中,则需要在代码中明确地初始化log4j。其语法为:
BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。
PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。
DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。
示例如下,在系统启动时执行一次,之后就不再执行。
  String logFile=
               (String)ServiceLocator.getInstance().getOne("CommuServerLog4j");
   //从系统配置文件中获得log4j的配置文件
  if (logFile != null) {
   if (logFile.toString().toLowerCase().endsWith(".xml")) {
    DOMConfigurator.configure(logFile);
   } else {
    PropertyConfigurator.configure(logFile);
   }
2.得到记录器
 使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为:
  public static Logger getLogger( String name)
 通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如:
  private static Logger logger = Logger.getLogger(BaseAction.class);
3.插入记录信息(格式化日志信息)
 当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:
        Logger.debug ( Object message ) ;
  Logger.info ( Object message ) ;
  Logger.warn ( Object message ) ;
  Logger.error ( Object message ) ;
4.多文件打印
根据开发的需要将不同的包名下的日志打到不同的地方,使得系统各个层次(如表示层,业务逻辑层,数据访问层等)的日志得以分开,不同的开发人员只关心相关的日志文件。在log4j.properties文件中做如下配置:
    log4j.category.com=DEBUG,A1
    log4j.category.org=ERROR,A2
说明:com包下面的的日志等级是DEBUG,打到A1这个地方,org包下面的的日志等级是ERROR,打到A2这个地方。

分享到:
评论

相关推荐

    Log4j 把不同包的日志打印到不同位置

    这篇博客"Log4j 把不同包的日志打印到不同位置"可能详细解释了如何利用Log4j配置来实现特定包的日志定向输出,以便于管理和分析来自不同模块的日志信息。 在Java应用中,我们常常会遇到多个模块或者不同包的类同时...

    log4j.properties配置详解 使用教程

    通过本文的介绍,我们可以了解到log4j的基本使用方法及其配置文件的配置技巧。通过合理地设置日志级别和输出目的地,我们可以有效地管理应用程序的日志输出,这对于调试和维护来说是非常重要的。希望本文能够帮助...

    log4j API.rar

    总的来说,Log4j API.rar提供的文档全面涵盖了Log4j的使用方法和配置技巧,对于提升Java开发者的日志管理水平具有重要作用。无论是初学者还是经验丰富的开发者,都应该熟悉并掌握这个强大的日志工具。通过深入理解和...

    Log4j相关资料

    Log4j是Java平台上广泛使用的日志记录框架,它的全称是Apache Log4j,由Apache软件基金会开发。Log4j提供了丰富的日志记录功能,包括日志级别控制、多种输出格式、灵活的日志配置以及插件扩展能力,使得开发者能够...

    log4j笔记

    本文将深入探讨log4j的基本概念、配置与使用方法,以及其源码解析,旨在帮助读者更好地理解和应用这个工具。 一、log4j简介 Log4j是由Apache软件基金会开发的日志记录库,主要服务于Java平台。它提供了一种灵活的...

    log4j使用完全手册

    ### log4j使用完全手册 #### 一、Log4j简介与基本概念 Log4j是Apache的一个开源项目,用于实现日志记录功能。通过它,开发者可以方便地控制...希望本手册能够帮助大家更好地掌握Log4j的使用技巧,提高软件开发效率。

    log4cpp-1.1.3.tar.gz源码和测试代码

    通过对log4cpp 1.1.3源码的深入理解和测试代码的实践,开发者不仅可以掌握该库的使用,还能学习到C++多态、模板、文件操作、配置文件解析等编程技巧,对提升软件开发能力大有裨益。同时,了解和熟悉这样的开源库,也...

    Android-可保持线程日志统一输出多线程不混乱

    7. **日志框架**:使用如Logback、Log4j等更强大的日志框架,它们提供了更多的配置选项和插件支持,能更好地适应复杂的多线程环境。 8. **日志级别控制**:根据调试需求,调整不同线程的日志级别,比如在生产环境中...

    java 打印

    “工具”标签可能暗示了文章讨论了一些实用的打印工具或者技巧,比如日志框架(如Log4j、SLF4J),它们提供了更高级的记录和打印功能,包括日志级别控制、日志格式定制、日志文件滚动等。 结合这些知识点,Java打印...

    网上绝无仅有的Log分析教程及例子(实用1).zip

    此外,对于大型项目,使用第三方的日志库如Logback或SLF4J可能更合适,它们提供了更高级的功能,如日志级别配置、文件输出、多线程支持等。 在分析Log时,我们要注意以下几点: 1. **合理使用日志级别**:避免在...

    Mybatis控制台打印Sql语句的实现代码

    这可以通过在Log4j配置文件中指定`ConsoleAppender`来实现,这样日志信息会被打印到控制台。另外,如果需要保存日志到文件,可以使用`FileAppender`。一个示例配置如下: ```xml log4j.rootLogger=debug, stdout,...

    进制转换及字符ASCII

    "ASCII及进制转换_V4.0.exe"这个文件可能是一个应用程序,它提供了图形用户界面,帮助用户方便地进行进制转换和ASCII码的相互转换。用户只需输入数值或字符,软件会自动完成计算,极大地简化了手动计算的过程,提高...

    iOS开发UI篇—IOS开发中Xcode的一些使用技巧.pdf

    四、代码块的创建与使用 通过自定义代码块,可以保存常用代码片段,并设置提示词,便于快速输入。使用 `<#name#>` 和 `<#type#>` 来保持代码块的灵活性,使其适应不同的上下文。 五、打印内容查看 在iOS开发中,...

    Java语言中实现打印功能的分析与应用.zip

    对于日志记录,Java提供了一个标准的日志框架——Java Util Logging(JUL),此外还有Log4j、SLF4J等第三方库。这些日志框架不仅提供了丰富的日志级别(如DEBUG, INFO, WARN, ERROR),还支持日志文件管理、日志分割...

    java源码:邮政汇款打印程序.rar

    8. **日志记录**:使用如log4j这样的日志工具,记录程序运行过程中的信息,便于调试和问题排查。 9. **编码规范**:遵循一定的编码规范,如SUN Java编码规范,以提高代码的可读性和可维护性。 10. **文档注释**:...

    jvm工具、参数调优&调试技巧

    5. 日志监控:利用日志框架(如Log4j, SLF4J等)记录运行时信息,辅助分析和调试。 总结来说,熟练掌握JVM工具、参数调优和调试技巧,是每个Java开发者必备的能力。通过有效的监控、优化和问题解决,可以显著提升...

    MyBatis教程

    - 加入log4j配置文件打印日志信息。 4. **字段名与实体类属性名不一致的处理**: - 在SQL映射文件中使用`resultMap`或`resultType`指定字段与属性之间的映射关系。 5. **实现关联表查询**: - **一对一关联**:...

    cll.rar_日志 java_日志管理

    例如,Log4j的配置文件可以设置哪些类的日志应打印到控制台,哪些应写入文件,以及使用何种日志级别。 日志处理器会根据消息的优先级和logger的等级来决定是否记录。Logger对象通常关联到特定的类或模块,每个...

    JAVA开发人员的十大戒律(TXT文件)

    建议在正式部署前移除这些打印语句,或者使用日志记录框架(如Log4j)来代替。 #### 七、注意GUI设计 对于用户界面(GUI)的设计而言,简洁直观的布局比复杂的交互更为重要。良好的GUI能够提升用户体验,降低用户...

Global site tag (gtag.js) - Google Analytics