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

在Spring的项目中配置Log4j存放日志文件到指定目录下

 
阅读更多

在Spring中使用LOG4J为日志输出的插件已有一段日子了,但有时候发现日志文件虽然是已经在根据自己的理想存放了,但还会有些莫名其妙的项目日志文件出现tomcat内(因为项目的日志文件都以项目命名嘛,所以比较容易区分这些log)。这些令我纠结的日志文件,让我在改善一下LOG4J的配置。才发现,之前用的配置方式真是弱爆了。

 

1.先说自己比较理想的存放日志路径。

我比较喜欢把日志文件放在项目的WEB-INF下,然后当然有个文件夹叫logs。logs相信很多人都会存在在这样的目录下,但放在WEB-INF目录下相信还是有些人不理解。其实当然是为了资源保护了。

 

2.旧的方式

编写Servlet在项目部署的时候重置log4j配置文件中的日志文件存放路径。

 

web.xml配置如下:

 

	<servlet>
		<servlet-name>log4j-init</servlet-name>
		<servlet-class>com.foo.log.Log4jInit</servlet-class>
		<init-param>
			<param-name>log4j_properties_path</param-name>
			<param-value>WEB-INF/classes/log4j.properties</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

 

 

Log4Init的代码就不贴了,网上也比较多。主要作用就是修改原有的log4j.appender的File配置修改为现在项目部署的绝对路径,方法多样,功能都一样!

 

问题产生了:

这种方式在Spring环境中还是会生成一些多余日志文件。因为在项目部署时,spring初始化比配置的Servlet启动的还早,所以原有的默认日志存放路径就先生效了(虽然没什么内容,也不对项目有什么影响)。

 

3.有没有更好的配置方式呢?

 

使用Spring提供的日志配置方法

web.xml添加如下代码:

 

	<context-param>
		<param-name>webAppRootKey</param-name>
		<param-value>project</param-value>
	</context-param>
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>WEB-INF/classes/log4j.properties</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
 

 

 

webAppRootKey: 配置项目的别名,上面配置别名为project。若你部署的项目不在tomcat中的话这个可以忽略,因为tomcat没为每个应用配置不同的webappRoot属性,所以如果出现两个或以上相同的应用属性名的话就会报错了。

 

然后修改log4j.properties的配置,把日志文件输出的路径配置修改为:

log4j.appender.A1.File=${project}WEB-INF/logs/Project.log

 

A1是我的appender命名。 ${project}是使用上述web.xml中的应用别名从而获取应用的绝对路径。

 

注:若不需要配置应用别名的话,即没配置webAppRootKey。可以直接这么写:

log4j.appender.A1.File=${webapp.root}WEB-INF/logs/Project.log

 

webapp.root为默认属性。若有配置webAppRootKey的话就被覆盖。

 

题外:

 

1.还有一种方式是使用环境变量,例如${catalina.home}。不过这样同样也会产生多余的log的,道理跟用Servlet一样。

 

当然,如果你不像我这么纠结这些多余的log的话。活得也比较轻松。。。

 

2.而在不同的操作系统中的路径分割符是不同的,linux是 "/" ,而windows是 "\",但目前的写法在两个环境中同样用tomcat测试是没问题的。虽然在windows的时候,初始化的日志看到的路径有点别扭。不过仿佛记得在一些应用服务器中会产生不兼容....

 

3.推荐默认情况下配置文件log4j.appender.A1.File=poject.log,而项目发布前,用ANT等脚本把路径修改为log4j.appender.A1.File=${project}WEB-INF/logs/Project.log 这样做的好处是,在用junit测试时,生成的日志文件就在项目的根路径中,容易处理或忽略。

1
0
分享到:
评论

相关推荐

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

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

    Springboot项目使用Slf4j将日志保存到本地目录的实现代码

    Springboot 项目使用 Slf4j 将日志保存到本地目录的实现代码 Slf4j 是一个 Java 日志记录门面,它提供了一个通用的日志记录API,允许开发者使用不同的日志记录框架,例如 Logback、Log4j 等。在 Springboot 项目中...

    详解Log4j 日志文件存放位置设置

    首先,要设置日志文件的存放位置,通常需要在Log4j的配置文件中使用特定的配置项。Log4j支持多种类型Appender,其中DailyRollingFileAppender是一个常用的Appender,它可以按照指定的日期格式滚动更新日志文件。 ...

    SSH框架中配置log4j的方法

    3. **统一的配置文件管理**:`log4j.properties`文件可以与其他配置文件一起存放在`/WEB-INF/`目录下,避免了因配置文件存放位置不当而导致的问题。 #### 三、配置Log4j的具体步骤 接下来,我们将详细介绍如何在...

    spring jar 包 _ log4j-1.2.17.jar_commons-logging.jar

    在标题“spring jar 包 _ log4j-1.2.17.jar_commons-logging.jar”中,提到了两个重要的库文件:log4j-1.2.17.jar和commons-logging.jar,它们都是Spring框架常用的日志处理工具。现在,我们将深入探讨这两个库以及...

    log4j 在web中的应用

    - 这种功能的实现依赖于Spring框架的支持,具体做法是在`web.xml`文件中指定log4j配置文件的位置: ```xml &lt;param-name&gt;log4jConfigLocation &lt;param-value&gt;WEB-INF/log4j.properties ``` 2. **简化log文件...

    Spring boot+Mybatis+log4j项目实例

    在本项目实例中,我们将深入探讨如何利用Spring Boot、Mybatis和Log4j这三大核心框架构建一个实际的Web应用程序。Spring Boot简化了Spring应用程序的初始设置和配置,Mybatis作为轻量级的持久层框架提供了灵活的SQL...

    Spring配置文件集合

    8. `log4j.xml`: 该文件是Log4j的日志配置,定义了日志级别、输出目的地、格式等,帮助我们在开发和调试过程中记录和分析应用的运行情况。 9. `applicationContext.xml`: 这是Spring容器的主配置文件,用于定义Bean...

    log4j-kafka:提供一个将标准log4j日志输出到kafka的工具

    log4j-kafka提供一个将标准log4j日志输出到kafka的工具。客户端配置:##log4j.properties#####kafka topic名称log4j.appender.kafka.topic=log4jtest#####kafka broker地址log4j.appender.kafka.brokerList=Hadoop2-...

    SpringBoot第 3 讲:SpringBoot+Junit+Log4J

    然后,在资源目录下创建`log4j.properties`或`log4j2.xml`配置文件,设置日志输出级别、目标和格式。SpringBoot会自动识别并加载这个配置,使得日志系统生效。 6. **测试与日志结合**: 在JUnit测试中,我们可以...

    ssmdemo+log4j写入数据库

    然后,他们会在Log4j的配置文件(如log4j.properties或log4j.xml)中定义日志级别、Appender,以及将日志写入数据库的自定义Layout。在业务逻辑中,他们会使用Log4j的API(如Logger)记录日志,而这些日志会通过...

    spring boot项目配置通用模板

    - Spring Boot默认集成了日志框架,如Logback或Log4j2,可以在配置文件中调整日志级别和输出格式。 通过这份通用模板,开发者可以快速地搭建起一个具备基础功能的Spring Boot应用,并在此基础上扩展自己的业务逻辑...

    spring mvc_08

    在Spring MVC和MyBatis的整合应用中,我们通常会在配置文件中设置Log4j的日志级别、输出目的地(如控制台、文件或网络)以及自定义的布局模式。 集成Log4j,我们需要创建一个log4j.properties或log4j.xml配置文件,...

    springboot整合logback保存日志到文件

    本篇将详细介绍如何在Spring Boot项目中整合Logback,实现日志的持久化保存到文件。 1. **添加依赖** 首先,我们需要在Spring Boot项目的`pom.xml`或`build.gradle`文件中引入Logback依赖。对于Maven用户,可以在`...

    SpringMVC+Log4j

    1. **配置灵活性**:通过配置文件(如log4j.properties或log4j.xml)可定制日志级别、输出位置、格式等。 2. **Appenders**:负责将日志信息输出到特定目的地,如ConsoleAppender、FileAppender等。 3. **Layouts**...

    Maven_SpringMVC_Ibatis_Log4j

    在本项目中,Log4j被用于记录应用程序的运行日志,便于调试和问题排查。 项目结构通常会包含以下几个部分: 1. `src/main/java`:存放Java源代码,包括业务逻辑、控制器和服务类。 2. `src/main/resources`:存储...

    Spring下载与配置.pdf

    首先,将这两个库的目录移动到`myspring/lib`下,然后创建一个日志配置文件`log4j.properties`,放置在`src`目录下,定义日志级别和输出格式。例如: ``` log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=...

    Spring下载与配置[整理].pdf

    3. 创建一个`log4j.properties`配置文件,位于`src`目录下,定义日志输出的格式和级别。例如: ``` log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout...

    SpringBoot默认日志配置说明

    Spring Boot默认集成了多种日志框架,如Logback和Log4j2,而其首选的日志实现是Logback。本文将深入探讨Spring Boot的日志配置,包括如何设置日志级别、输出位置、格式等。 首先,Spring Boot的日志配置主要通过`...

    Myecilpse上配置好的SSM(spring+springMVC+Mybatis)项目结构,方便直接使用

    此外,开发过程中可能还需要集成测试框架如JUnit,日志框架如Log4j,以及其他的工具库。这个项目结构已经为这些集成做好了准备,只需按照需求添加相应的配置和代码即可。 总之,这个SSM项目结构是为MyEclipse用户...

Global site tag (gtag.js) - Google Analytics