`
jimb
  • 浏览: 95596 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

log4j在servlet中的配置

阅读更多
(1)首先需要一个log4j-1.2.*.jar包,jar包的位置:webapps/web/WEB-INF/lib/下
在log4j Web站点下载ZIP(Windows)或gzipped(基于Unix系统)格式的发行版本:http://jakarta.apache.org/log4j/docs/download.html 下载,将发行版解包,将创建logging-log4j-1.2.13目录,在此顶层目录dist/lib/目录下有log4j-1.2.13.jar文件。
    (2)在web/WEB-INF/web.xml文件中做如下配置:配置一个Servlet映射,用来初始化log4j.
<servlet>
    <servlet-name>log4jInitServlet</servlet-name>
    <servlet-class>com.airingbox.kzSuggestion.Log4jInitServlet</servlet-class>
    <init-param>
        <param-name>Log4j-init-file</param-name>
        <param-value>/WEB-INF/classes/log4j.properties</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>log4jInitServlet</servlet-name>
    <url-pattern>/log4jinitservlet</url-pattern>
</servlet-mapping>
<load-on-startup>1</load-on-startup>是启动顺序,0:表示什么时候用什么时候启动,1:表示自动启动
  (3)编写初始化的servlet的类文件
package com.airinbox.kzSuggestion;
import org.apache.log4j.PropertyConfigurator;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletContext;
import java.io.PrintWriter;
import java.io.IOException;

/**
* 初始化log4j模块
* <p>Title: init</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author zhanglipeng
* @version 1.0
*/
public class Log4jInitServlet extends HttpServlet {

  public  void init() {
    String prefix =  getServletContext().getRealPath("/");
    String file = getInitParameter("Log4j-init-file");
    if(file != null) {
      /**
       *读取配置文件的方法
       *BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。
       *PropertyConfigurator.configure ( String configFilename) :读取使用Java
       *的特性文件编写的配置文件。
       *DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。
       */
      PropertyConfigurator.configure(prefix+file);
    }
    System.out.println("LOG4J模块初始化成功!");
  }

  public  void doGet(HttpServletRequest req, HttpServletResponse res) {
  }
}
  (4)编写要读取的属性文件
# 将信息输出到控制台
log4j.rootLogger=INFO,A1,A4
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p [%t] %37c %3x - %m%n
# Available levels are DEBUG, INFO, WARN, ERROR, FATAL
他们级别最高的是fatal,就是说如果你在log4j.rootLogger=fatal,A1,A4 那么在日志中就不会出现比他级别低的debug,info,warn,error的日志信息,如果用info,就只是不会出现debug信息
这里的%p是指优先级,%m是指message本身,%n是指在新的一行输出




# 将信息输出到mylog.txt文件中
log4j.appender.A4=org.apache.log4j.FileAppender
log4j.appender.A4.file=/home/kzSuggestion/log/mylog.txt
log4j.appender.A4.layout=org.apache.log4j.PatternLayout
log4j.appender.A4.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

   a.rootLogger:log书写器,A1,A4,A6,A8是日志存储器的名字,就是说你要将日志输出到控制台,输出到文件,还是每天产生一个文件,还是通过UDP输出到文件
log4j.appender.A4.file=/home/kzSuggestion/log/mylog.txt是要输出到文件的绝对路径
   b.Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去  

   c.ConsoleAppender - 目的地为控制台的Appender

   d.FileAppender - 目的地为文件的Appender

   e.RollingFileAppender - 目的地为大小受限的文件的Appender

   f.Layout - 日志格式化器,用来把程序员的logging request格式化成字符串
      PatternLayout - 用指定的pattern格式化logging request的Layout

   g.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 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)

(5)这样就可以试一下了,在JSP或JAVA中输出log
    a:导入org.apache.log4j.Logger和org.apache.log4j.propertyConfigurator包
    b:调用方法:Logger logger = Logger.getLogger(你的类名.class.getName());
       或者:Logger logger = Logger.getLogger(*.jsp);
       logger.info("come in *** "); //输出log
    c:插入log信息的4种方法
  Logger.debug ( Object message ) ;
  Logger.info ( Object message ) ;
  Logger.warn ( Object message ) ;
  Logger.error ( Object message ) ;
(6)这时可以在控制台或在应用下/log/mylog.txt中看到log的输出信息

资料下载可以到log4j的主页:http://jakarta.apache.org/log4j 

分享到:
评论

相关推荐

    tomcat下的log4j日志配置

    2. **配置全局 Log4j 属性文件**:在任意位置创建 `log4j.properties` 文件,并设置全局的日志级别、输出格式及存储路径等。通常会将该文件放置在 Tomcat 的 `conf` 目录下。 ```properties log4j.rootLogger=...

    log4j与web.xml的配置

    - 在log4j配置文件中,我们已经定义了日志输出到文件,如`/var/log/app.log`。`DailyRollingFileAppender`会根据日期每天创建新的日志文件,避免单个文件过大。 6. **使用Log4j** - 在Java代码中,通过`Logger....

    log4j.properties配置详解

    ### Log4j.properties配置详解 #### 一、Log4j配置文件基本概念 Log4j是一种广泛应用于Java应用程序的日志框架,它可以帮助开发者轻松管理应用程序的日志记录过程。Log4j支持多种配置方式,其中.properties文件...

    log4j中配置日志文件相对路径方法(PDF)

    ### Log4j中配置日志文件相对路径方法详解 #### 概述 在软件开发过程中,日志记录是一项重要的功能,它有助于开发者调试程序、监控应用程序的运行状态以及追踪问题。`Log4j`作为一款优秀的日志管理工具,被广泛应用...

    Log4j2结合Slf4j配置使用

    Log4j2 结合 Slf4j 配置使用 Log4j2 是一个功能强大且广泛使用的日志记录工具,它提供了灵活的日志记录机制和高性能的日志记录能力。Slf4j 则是一个简单的日志记录门面,提供了统一的日志记录接口。今天,我们将...

    log4j(二):动态配置日志输出路径

    在Web应用中,如使用的是Servlet环境,可以通过在`web.xml`中配置`ContextLoaderListener`来加载Log4j配置,同时,我们还可以创建一个Servlet,当接收到特定请求时,更新Log4j配置。 ```xml &lt;!-- web.xml 示例 --&gt; ...

    log4j详细配置说明

    - **配置 web.xml**:在应用的 `web.xml` 文件中添加以下配置,以便在启动时加载 Log4j: ```xml &lt;listener-class&gt;com.apache.jakarta.log4j.Log4jInit&lt;/listener-class&gt; ``` 其中 `&lt;init-param&gt;` 用于指定...

    Log4j的配置与使用

    在J2EE环境中使用Log4j时,可以通过Servlet容器的初始化参数来指定日志配置文件的位置。这种方式非常适合在Web应用中集成Log4j。 ```java import java.io.IOException; import javax.servlet.ServletException; ...

    Log4j配置文件

    4. **通过应用服务器配置**: 在部署到应用服务器时,可以通过特定的Servlet来配置Log4j。 #### 六、总结 Log4j的配置文件允许开发者精确地控制日志记录的过程。通过对日志级别、Appender和Layout的定制配置,不仅...

    log4j日志报错解决办法

    在Java开发过程中,如果遇到"log4j:WARN Please initialize the log4j system properly"这样的错误提示,通常意味着Log4j没有正确配置或者找不到配置文件。 首先,错误信息"log4j:WARN No appenders could be found...

    tomcat下struts2的log4j日志配置.doc

    在J2EE应用中,尤其是在Tomcat这样的Servlet容器中使用Log4j,通常需要在Web应用的`web.xml`配置文件中指定日志初始化参数。这可以通过在`web.xml`中添加一个`context-param`元素来实现,将Log4j的配置文件路径作为...

    log4j中配置日志文件相对路径方法分析

    log4j中配置日志文件相对路径方法分析 方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 其中“${...

    0积分:完全相对路径的log4j配置

    例如,在配置文件中指定的日志文件路径`log4j.appender.logfile.File=set up in web.xml`,这里的“set up in web.xml”实际上是指在`web.xml`中指定的日志文件路径,而这个路径也是相对于项目的根目录。 #### 总结...

    apache-log4j-2.14.0-bin.zip

    3. `log4j-web-2.14.0.jar`(如果适用): 用于在Web应用环境中,如Tomcat中,提供Servlet容器的集成。 4. `configurations`: 可能包含示例或默认的配置文件,如`log4j2.xml`或`log4j2.json`,这些文件定义了日志行为...

    Log4j中相对路径的问题

    在`web.xml`中,你需要定义这个`Log4jInit`Servlet,并设置初始化参数`log4j`为`WEB-INF/classes/log4j.properties`的路径,这样在Web应用启动时,`Log4jInit`Servlet就会被调用,从而动态设置日志路径。 总结来说...

    tomcat下用Log4j 按文件大小,生成catalina.out日志文件

    在Tomcat中配置Log4j,可以实现按照文件大小生成日志文件,如`catalina.out`,从而避免单个日志文件过大导致的管理不便。 首先,我们需要理解Log4j的工作原理。Log4j主要包括三个核心组件:Logger(日志器)、...

    log4j.properties文件放置在其它目录下

    然后,我们需要写个 servlet,以便在 Servlet 中指定 log4j 配置文件的路径,例如: public void init() { String prefix = getServletContext().getRealPath("/"); String file = getInitParameter("log4...

    log4j2用户指南

    Log4j2 支持日志分离,即在一个应用程序中使用多个独立的日志记录配置: - **Separate ClassLoaders**:使用不同的类加载器隔离日志配置。 - **Separate Contexts**:每个配置使用独立的 LoggerContext。 #### 15....

    log4j学习

    5. **自定义Servlet初始化Log4j**:创建一个自定义的Servlet,如`Log4jInit`,在`init()`方法中使用`PropertyConfigurator.configure()`来加载`log4j.properties`配置。 #### 总结 通过以上步骤,我们可以在Java...

Global site tag (gtag.js) - Google Analytics