1 / 13

Log4j 初步学习

Log4j 初步学习. 张番栋 00848180. Log4j 初步学习. Log4j 简介 Log4j 的相关类简介 Log4j 配置的实时更新 Log4j 日志过滤器(未完成). Log4j 简介. 在代码中输出程序上下文信息是一种排错的低技能办法,这也是最普遍适用的办法,因为排错工具并不总是可以被使用或者适用于你的程序。对于多线程的应用程序和多数发行的应用程序,通常就是这样的情形。 怎么做呢?用 System.out.println() 不方便管理。 Log4j 就是这样的日志管理工具。

kalin
Download Presentation

Log4j 初步学习

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Log4j初步学习 张番栋 00848180

  2. Log4j初步学习 • Log4j简介 • Log4j的相关类简介 • Log4j配置的实时更新 • Log4j日志过滤器(未完成)

  3. Log4j简介 • 在代码中输出程序上下文信息是一种排错的低技能办法,这也是最普遍适用的办法,因为排错工具并不总是可以被使用或者适用于你的程序。对于多线程的应用程序和多数发行的应用程序,通常就是这样的情形。 • 怎么做呢?用System.out.println()不方便管理。Log4j就是这样的日志管理工具。 • 它具有多种优点。首先,它能精确地提供运行时的上下文(context)。一旦在程序中加入了Log 代码,它就能自动的生成并输出logging信息而不需要人为的干预。然后,它能够关闭一些调试信息输出而不影响其他人的调试。另外,log信息的输出可以被保存到一个固定的地方,以备以后研究。除了在开发过程中发挥它的作用外,一个性能丰富的日志记录软件包能当作一个审计工具(audit tool)使用。(log4j手册)

  4. Log4j相关类简介 • Logger • 输出日志信息 • 实例化:Logger logger = Logger.getRootLogger(name); • name是你想要的名字,一般使用logger所在类的名字 • 不同的logger之间以名字为键、以’.’为分隔形成父子关系(功能上类似于继承关系,例如在子logger没有设置的情况下,它会承用父亲的优先级等性质),其中root可以通过Logger.getRootLogger()得到,它是所有logger的祖先(这一点很关键,是我后面实时更新实现的关键点),例如: • Logger log1,log2,log3; • log1 = Logger.getRootLogger(“java.awt”); • log2 = Logger.getRootLogger(“java.awt.event”); • log3 = Logger.getRootLogger(“javax.swing”); • 则log1和log3是root的直接子节点,log2是log1的直接子节点

  5. Log4j相关类简介 • Level • 日志优先级,设置后logger只能输出高于该优先级的日志 • 常用优先级从低到高:debug、info、warn、error、fatal • 实例化方法:Level.DEBUG/Level.ERROR等; • logger.setLevel(Level.INFO); • logger.debug(“debug”);//不会输出 • logger.info(“info”);//会输出 • logger.error(“error”);//会输出

  6. Log4j相关类简介 • Appender • 控制日志输出的目的地 • org.apache.log4j.ConsoleAppender 控制台输出 • org.apache.log4j.FileAppender 文件 • org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件 • org.apache.log4j.RollingFileAppender 文件大小到达指定尺寸的时候产生一个新的文件 • org.apache.log4j.WriterAppender 将日志信息以流格式发送到任意指定的地方 • 其它…… • 具体使用可以参见log4j手册

  7. Log4j相关接口简介 • LoggerRepository • logger的仓库 • 一般来说,logger以名字为层次存放在repository中,我们可以通过它查询已经创建的logger

  8. Log4j相关类简介 • org.apache.log4j.config.PropertySetter • 以对象的属性或属性集为参数,更新一个对象 • 这是一个非常非常有用的类,尤其对于我后面的实时更新。当我们要设置一个对象的属性,但在编程时不知道这个对象的类型的时候,用这个类得方法十分方便。 • 比如我们想要利用属性集p(Properties类型)设置logger里以appenderName为名字的appender,就可以: • Appender appender = logger.getAppender(appendername); • PropertySetter.setProperties(appender, p); • 其他的方法及其使用可以参见log4j的api

  9. Log4j相关类简介 • org.apache.log4j.spi.Filter • 过滤器

  10. Log4j使用步骤 • 1、设置配置(一般通过配置文件控制,但加载配置文件的时候会重启日志服务) • 2、获得logger • 3、日志输出

  11. Log4j配置的实时更新 • 需求:在不重启日志服务的情况下,实时更新日志的配置 • 步骤: • 1、更新rootLogger的相关属性 • 2、更新配置文件

  12. 更新rootLogger的相关属性 • 1、通过名字获得appender • 2、更新appender的layout(通过PropertySetter.setProperties,下同) • 3、更新appender的filter • 4、更新appender的errorHandler • 5、更新appender的appender-ref • 6、更新appender

  13. Log4j日志过滤器(未完成)

More Related