`

web项目中Log4j不输出到文件问题

    博客分类:
  • java
 
阅读更多
 
 
 
 

 

log4j.properties文件放在classpath文件夹下(即web项目的WEB-INF/classes文件夹下,
 

这样可以保证log4j能够自动识别配置文件,而不用显式的配置)内容如下:

[plain] view plaincopy
  1. log4j.rootLogger=warn, stdout,file  
  2.   
  3. ### direct log messages to stdout ###  
  4. log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
  5. log4j.appender.stdout.Target=System.out  
  6. #log4j.appender.stdout.Target=System.err  
  7. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
  8. #log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n  
  9. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] %c{1}:%L - %m%n  
  10.   
  11.   
  12. ### direct messages to file file.log ###  
  13. #log4j.appender.file=org.apache.log4j.FileAppender  
  14. log4j.appender.file=org.apache.log4j.DailyRollingFileAppender  
  15. log4j.appender.file.DatePattern=yyyyMMdd  
  16. log4j.appender.file.File=../logs.log  
  17. log4j.appender.file.layout=org.apache.log4j.PatternLayout  
  18. log4j.appender.file.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %5p %c{1}:%L - %m%n  

问题描述:在控制台程序下可以输出到控制台和logs.log文件当中,但是在web项目当中做的log输出只能输出到控制台,而无法输出到logs.log文件当中。

控制台程序如下:

[java] view plaincopy
  1. public class TestLogger {  
  2.   
  3.     public static Log log = LogFactory.getLog(TestLogger.class);  
  4.   
  5.     public static void main(String[] args) {  
  6.         log.error("怎么回事?");  
  7.     }  
  8.   
  9.     @Test  
  10.     public void test() {  
  11.         log.error("怎么回事?");  
  12.     }  
  13. }  

以上程序可以输出到控制台和logs.log文件当中。但是如下程序:

[java] view plaincopy
  1. public class TestLogs extends HttpServlet {  
  2.     private static final long serialVersionUID = 1L;  
  3.     private static Log log = LogFactory.getLog(TestLogs.class);  
  4.   
  5.     /** 
  6.      * @see HttpServlet#HttpServlet() 
  7.      */  
  8.     public TestLogs() {  
  9.         // TODO Auto-generated constructor stub  
  10.     }  
  11.   
  12.     @Override  
  13.     public void init() throws ServletException {  
  14.         log.error("怎么回事?");  
  15.     }  
  16. }  

输出只能输出到控制台,而无法输出到logs.log文件当中。

问题出在
log4j.appender.file.File=../logs.log

这个配置之上。应更改为:

log4j.appender.file.File=d:/logs.log

即要指定绝对路径而不能指定相对路径!问题解决!

配置成相对路径时,在eclipse 工程跟目录下能生成相应的日志文件,但是web服务器启动时不会记录到根目录下的日志文件,因为web服务器找不到。

纠结好久的问题!!。

 

 

分享到:
评论
4 楼 小二滨 2015-03-06  
非常感谢!我的项目中用了spring的@Component,一开始还以为是注入的时候有什么不对的地方呢。纠结了一上午。还是基本功不够啊。谢谢
3 楼 wen.owen 2014-12-11  
困扰了我半天的问题,非常感谢
2 楼 feiyeguohai 2014-04-14  
confirmAname 写道
那如果我不想使用绝对地址,我想输出到对应项目的某个目录下,怎么解决呢?

网上有很多解决方法,指定保存到web根目录下某个目录下,googling
1 楼 confirmAname 2014-04-13  
那如果我不想使用绝对地址,我想输出到对应项目的某个目录下,怎么解决呢?

相关推荐

    SSM整合中的Log4j日志的配置详情

    在 SSM 整合项目中,需要在 web.xml 文件中指定 Log4j 配置文件的位置,以便 Spring 可以加载 Log4j 配置文件。下面是一个基本的 web.xml 配置: ``` <listener-class>org.springframework.web.util.Log4...

    Web项目中使用Log4j实例

    通过以上步骤,我们可以有效地在Web项目中集成并利用Log4j进行日志记录,从而提高开发效率,提升问题排查能力,以及优化应用性能。对于更复杂的需求,如分布式日志收集、日志搜索与分析,可以结合ELK(Elasticsearch...

    web项目log4j简单案例

    - **下载与导入**:首先,你需要从官方网站或依赖管理工具(如Maven、Gradle)获取Log4j的JAR包,然后将其添加到Web项目的类路径中。 - **配置Log4j**:创建一个名为`log4j.properties`或`log4j.xml`的配置文件,...

    log4j与web.xml的配置

    - 将log4j的JAR文件(如log4j-1.2.x.jar)添加到项目的类路径中。 - 将log4j配置文件放入WEB-INF/classes目录下,确保在Web应用启动时能被加载。 4. **通过web.xml配置Log4j** - 在web.xml中,我们可以使用`...

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

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

    log4j 配置日志文件,把日志信息输出到项目的某个文件夹下

    在本文中,我们将深入探讨如何配置log4j,以便将日志信息输出到项目中的特定文件夹。 首先,我们需要创建一个`log4j.properties`或`log4j.xml`配置文件,这个文件通常放在项目的`src/main/resources`目录下。在这个...

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

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

    无法打出log4j日志的问题排查

    有时,旧版本的Log4j可能不支持新特性或存在已知问题。 10. **异常处理**:如果Log4j的初始化过程中出现异常,可能不会有任何日志输出。查看应用启动时的异常堆栈,找出可能的问题。 排查过程中,可以尝试逐步简化...

    Log4j2 web demo (log4j2 version 2.1)

    在Web项目中,Log4j2的配置通常放在`WEB-INF/classes`目录下的`log4j2.xml`或`log4j2.json`文件中。以下是一个简单的`log4j2.xml`配置示例: ```xml [%t] %-5level %logger{36} - %msg%n"/> `...

    WAS上log4j日志不能输出(ibatis)sql语句解决办法[借鉴].pdf

    WAS 上 log4j 日志不能...解决 WAS 上 log4j 日志不能输出(ibatis)sql 语句的问题需要改变 WAS 的默认 LogFactory 实现类,使其使用 log4j 框架下的 LogFactory 实现类,并且需要正确配置 log4j.properties 文件。

    log4j添加日志到数据库和文件中

    在"log4j添加日志到数据库和文件中"的场景中,我们首先需要理解Log4j的基本架构。它主要由三个组件构成:Logger(日志器)、Appender(输出器)和Layout(布局)。Logger负责生成日志事件,Appender则负责将这些事件...

    log4j.properties配置详解

    - `org.apache.log4j.FileAppender`:将日志输出到指定的文件中。 - `org.apache.log4j.DailyRollingFileAppender`:根据日期滚动日志文件,每天生成一个新的日志文件。 - `org.apache.log4j.RollingFileAppender...

    非web工程使用slf4j输出日志

    SLF4J(Simple Logging Facade for Java)是Java中的一种日志抽象层,它为各种日志框架,如Log4j、Logback等提供一个简单的接口,使得开发者能够在不改变代码的情况下更换日志实现。在非Web工程中,SLF4J同样扮演着...

    Spring项目中怎么配置log4j

    在Spring项目中配置log4j是一项基础且重要的工作,它能帮助我们记录应用程序的运行日志,便于调试、排查问题和性能分析。Log4j是一个广泛使用的Java日志框架,提供灵活的日志记录功能。接下来,我们将详细讲解如何在...

    Tomcat使用Log4j输出catalina.out日志

    另外,java.util.logging生成的日志格式与项目中使用Log4j记录的日志格式不一致,这会导致在后期日志分析时出现格式不统一的问题。 为了改善这些问题,Tomcat提供了一种机制,允许我们通过配置和替换特定的jar包来...

    Tomcat下使用Log4j接管生成日志文件

    创建一个名为`log4j.properties`或`log4j.xml`的配置文件,放置在Web应用的`WEB-INF/classes`目录下。例如,`log4j.properties`配置如下: ```properties # 设置全局日志级别为INFO log4j.rootLogger=INFO, FILE #...

    log4j.properties(完整版) log4j.properties(精简版)

    - **定义Appender**:例如`log4j.appender.stdout=org.apache.log4j.ConsoleAppender`,定义了一个输出到控制台的Appender。 - **配置Appender属性**:如`log4j.appender.stdout.Target=System.out`,表示将日志输出...

    log4j 在web中的应用

    - 当项目中包含log4j配置文件时,可能会影响JBoss原有的日志输出行为。例如,如果项目中的配置文件包含了Console Appender,则可能会导致错误,如`ERROR: invalid console appender config detected, console ...

    maven+springmvc+mybatis+log4j框架搭建

    本教程将详细阐述如何使用四个关键组件——Maven、SpringMVC、MyBatis和Log4j——来搭建一个强大的Web应用框架,旨在提高开发效率并优化项目管理。 **Maven** 是一个流行的项目管理和综合工具,它通过统一的构建...

Global site tag (gtag.js) - Google Analytics