Java Web log4j (日志)

为什么要使用日志?

开发阶段: 

    发现程序的问题,排错

  产品阶段:

    记录程序运行状态

System.out.println()的局限性

不能在运行时打开或者关闭

  不能选择包或者类,在运行的的时候打开或者关闭

  输出的信息没有分级

  只能输出文本信息

  不能改变输出的位置

Log4j可以解决以上的问题!

hibernate内置log4j,记录日志信息

log4j官方网址:

http://lgging.apache.org/log4j

下载得到:

 log4j-1.2.15.jar

    log4j.properties

把下载得到来的文件路径添加到当前项目的Build Path下

log4j的基本用法:

新建java project项目:

build Path: log4j-1.2.15.jar

Example.java

import org.apache.log4j.Logger;

public class Examlpe{

private static Logger logger=Logger.getLogger(Example.class);

  public static voie main(String[] args){

    logger.debug("In the main method ");

    logger.ingo("Welcome come to http://www.cnblogs.com/hongten ");

    logger.error("This is an error message");

    }

}    

运行这个例子的时候需要log4.properties配置文件

通过这个配置文件,我们就可以设置日志输出的格式,也就是外观

还可以设置这个日志信息输出到那里去,是到终端,还是到物理文件。

还可以记录日志的详细的样式

在src目录下:

log4j.propreties

代码:

设置终端输出日志信息:

--------------log4j的输出级别为debug:debug,appender1,当然还可以是info,error,他们的级别是debug<info<error-----------------

--------------如:现在是debug:debug.appender1,则debug,info,error都会输出-----------------

--------------如:现在是info:into.appender1,则info,error会输出-----------------

--------------如:现在是error:error.appender1,则error会输出-----------------

log4j.rootLogger=debug,appender1

--------------日志信息到终端输出-----------------

log4j.appender.appender1=org.apache.log4j.ConsoleAppender

--------------终端输出的样式-----------------

log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

设置保存日志信息的路径: 

log4j.rootLogger=debug,appender1

--------------日志信息到终端输出-----------------

log4j.appender.appender1=org.apache.log4j.FileAppender

--------------日志信息保存在c:/demolog4j.log中-----------------

log4j.appender.appender1.File=c:/demolog4j.log

--------------终端输出的样式-----------------

log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

设置保存日志信息的路径和保存的格式为html格式: 

log4j.rootLogger=debug,appender1

--------------日志信息到终端输出-----------------

log4j.appender.appender1=org.apache.log4j.FileAppender

--------------日志信息保存在c:/demolog4j.log中-----------------

log4j.appender.appender1.File=c:/demolog4j.htm

--------------终端输出的样式-----------------

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

 log4j核心

Logger

    Logger完成日志信息的处理,可以分成不同的级别记录日志信息,如:debug,info,error

    Logger可以定义输出的层次和决定信息是否输出

    Logger输出的信息是有优先级别的: ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF------级别由小到大

    常用的有:DEBUG,INFO,WARN,ERROR

 Appender

    Appender设置日志信息的去向  如:一个文件中,*.log,*.htm等。或者说是数据库中 

    Appender就是设置日志讯息输出到那个地方,可以同时指定多个输出目的地:

    log4j.rootLogger=debug,appender1,appender2    

    log4j.appender.appender1=org.apache.log4j.ConsoleAppender

    log4j.appender.appender2=org.apache.log4j.ConsoleAppender

---------------------------------------------------------------------------------

 常用的Appender:

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

  ogr.apache.log4j.FileAppender(文件)

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

  org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸的时候产生一个新的文件)

  org.apache.log4j.WiterAppender(将日志讯息一串流格式发送到任意指定的地方)

  org.apache.log4j.JDBCAppender(将日志讯息保存到数据库中)

  org.apache.log4j.SMTPAppender(将日志信息以邮件的方式发送到指定的地方)

---------------------------------------------------------------------------------

 Layout

    Layout设置日志信息的输出样式

---------------------------------------------------------------------------------

Layout提供的layout的方式:

  org.apache.log4j.HTMLLayout(一HTML表格形式布局)

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

  org.apache.log4j.TTCCLayout(包含日志产生时间,执行者,类别等讯息)

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

---------------------------------------------------------------------------------

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

定制所输出的日志信息的样式:

  %p  输出优先级别:DEBUG,INFO,WARN,ERROR,FATAL

  %r   输出字应用启动到输出该日志讯息所耗时秒数

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

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

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

  %d   输出日志时间点的日期或时间

  %d{yyyy-MM-dd HH:mm:ss} 指定日期或时间格式

  %l 输出日志时间发生的位置,即输出日志讯息的语句处于他所在的类别的第几行

  %m  输出代码中指定的讯息

  %n  输出一个换行符号

例子:

log4j.properties

log4j.rootLogger=debug,appender1

log4j.appender.appender1=org.apache.log4j.ConsoleAppender

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

log4j.appender.appender1.layout.ConversionPattern=%r  [%t]    %p - %c - %l - %m%n

例子二:

log4j.rootLogger=debug,appender1,appender2 log4j.appender.appender1=org.apache.log4j.ConsoleAppender log4j.appender.appender1.layout=org.apache.log4j.PatternLayout log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%c] %m%n

log4j.appender.appender2=org.apache.log4j.FileAppender log4j.appender.appender2.layout=org.apache.log4j.PatternLayout log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss}][%c] %m%n log4j.appender.appender2.File=C:/HongtenLog4j.log

---------------------------------------------------------------------------------

配置文件

    log4j.properties

    log4j.xml

---------------------------------------------------------------------------------

log4j.xml

代码:

<?xml version="1.0"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">     <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">         <layout class="org.apache.log4j.PatternLayout">             <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n"/>         </layout>     </appender>

    <root>         <priority value="ERROR"/>         <appender-ref ref="CONSOLE"/>     </root> </log4j:configuration>

---------------------------------------------------------------------------------

 关于性能影响

  Log4j对程序的运行的性能影响非常小

  还可以通过以下的方式,降低性能影响:

    if(logger.idDebugEnabled()){

      logger.debug("x="+longRunning());

    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源优测

[接口测试 - 基础篇] 10 别啊,还有INI格式呢,别忘记我

什么是INI格式 INI文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。这种配置...

399120
来自专栏Golang语言社区

Golang语言学习-并发

goroutine: 由GO运行环境管理的轻量级线程 channel: 有类型的管道,操作符为 <- 数据流向箭头指向的方向 使用make(chan ...

294110
来自专栏学海无涯

Java Web之MySQL在项目中的使用

尴尬:access denied for user ’root’@’localhost’ using password yes 有时候,在连接 MySQL 数据...

28960
来自专栏Golang语言社区

Golang语言学习-并发

goroutine: 由GO运行环境管理的轻量级线程 channel: 有类型的管道,操作符为 <- 数据流向箭头指向的方向 使用make(chan ...

36980
来自专栏Java进阶架构师

02:SpringBoot整合SpringDataJPA实现数据库的访问(一)

Spring Data JPA等于在ORM之上又进行了一次封装,但具体的对数据库的访问依然要依赖于底层的ORM框架,Spring Data JPA默认是通过Hi...

7810
来自专栏章鱼的慢慢技术路

错误代码CS0051可访问性不一致_解决方案

本来对BaseStruct设置为私有访问,但调用时又想公开化,从而造成了编译错误。

12620
来自专栏Jed的技术阶梯

Kafka 新版消费者 API(二):提交偏移量

最简单的提交方式是让消费者自动提交偏移量。如果 enable.auto.commit 被设为 true,那么每过 5s,消费者会自动把从 poll() 方法接收...

1.3K20
来自专栏SpringBoot 核心技术

第十三章:SpringBoot实战SpringDataJPA构建项目总结

1K30
来自专栏python3

python shutil模块

和copyfileobj是类似的功能,不同的是,copyfile不需要打开文件,底层做好了。

9410
来自专栏nummy

Django生产环境下如何查看Debug信息

我们知道,部署Django到生产环境时,settings.DEBUG必须设置为False, 否则会带来很大的安全隐患。

10920

扫码关注云+社区

领取腾讯云代金券