spring+log4j配置文件无法读取系统环境变量问题_log4j2.properties 获取application变量不生效-程序员宅基地

技术标签: Java  环境变量  系统环境变量  log4j  

在spring-web项目中,log4j的配置位于log4j.properties文件中,其中日志路径使用环境变量配置(配置在/etc/profile)。但是,实际运行该路径没有生效。如果直接写路径,是没有问题的。

log4j.appender.logFile.File = ${BYTREES_LOG4J_FILE}

原因分析:

log4j采用System.getProperty读取系统属性,而System.getenv才是读取环境变量,可以参考org.apache.log4j.helpers.OptionConverter

解决方案:

创建一个Listener,在spring启动前,把需要将环境变量,转化成系统属性。

Listener创建:

package com.bytrees.utils;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class Log4jListener implements ServletContextListener  {

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		String log4jLogFile = System.getenv("BYTREES_LOG4J_FILE");
		if (log4jLogFile != null) {
			System.setProperty("BYTREES_LOG4J_FILE", log4jLogFile);
		}
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		System.getProperties().remove("BYTREES_LOG4J_FILE");
	}
    
}

配置web.xml,注意这个必须在ContextLoaderListener之前

<listener>  
    <listener-class>com.bytrees.utils.Log4jListener</listener-class>  
</listener>

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/loophome/article/details/83380322

智能推荐

springBoot集成redisCluster-程序员宅基地

文章浏览阅读94次。本文主要内容:springBoot简介,在SpringBoot中如何集成Redis,可配置Redis集群。关于SpringBoot你想要的,这里都有:https://spring.io/projects/spring-boot 这是SpringBoot的官方文档,开发者已经将你需要的东西都给你了。SpringBoot是一个大的容器,可以在这里很轻松地创建各种Spring应用,并且轻..._springboot 2.0.5 release redis cluser

Transformer新型神经网络在机器翻译中的应用 | 公开课笔记-程序员宅基地

文章浏览阅读2.1k次。嘉宾 | 于恒来源 | AI科技大本营在线公开课编辑 | Jane于恒:直播间的朋友大家好!欢迎大家来到本次AI科技大本营公开课,我是本次讲师于恒。在讲课开始之前先简短..._transformer 多卡

ReactNative NodeJs v5.7.0稳定版官方下载_native.js下载-程序员宅基地

文章浏览阅读1.2k次。Windows 32-bit Installer: https://nodejs.org/dist/v5.2.0/node-v5.2.0-x86.msiWindows 64-bit Installer: https://nodejs.org/dist/v5.2.0/node-v5.2.0-x64.msiWindows 32-bit Binary: https://nodejs.org/di_native.js下载

来来来,一起来做四道面试真题-程序员宅基地

文章浏览阅读381次。来来来,一起来做四道面试真题1.导语下面是前两天某哥们面某大厂的面试真题。最大连续子序列深拷贝带指向随机节点的链表求32位整数中二进制1的个数大数乘法本节重点阐述这四道题的思路与实现,并..._面试真题有版权吗

灾害应急管理信息化建设“四步走”——以水旱灾害为例_水旱灾害防洪数据化项目-程序员宅基地

文章浏览阅读1.4k次。引言中国是世界上受自然灾害影响最为严重的国家之一,其中又以水旱灾害的影响最大。由于我国领土面积广大,河湖众多,且地处亚欧大陆和太平洋之间,季风气候盛行,降水时空分布不均,导致了我国的水旱灾害具有种类多、分布广、发生频率高、持续时间长、次生灾害严重、经济损失大、造成人员伤亡多的特点。尤其是今年,是我国自1998年以来汛情最为严重的一年。图1 2020年前三季度洪涝灾害概况近年来国家对于提高灾害风险治理能力十分重视。“十三五”期间,我国进一步加大了防灾减灾科技投入,以防灾减灾业务需求为导向,实施了一大批_水旱灾害防洪数据化项目

MinGW_mingw seup-程序员宅基地

文章浏览阅读1.1k次。MinGWMingW(Minimalist GNU on Windows)是一个Linux/Windows下的可以把软件源码中Unix-like OS API调用通过头文件翻译替换成相应的Windows API调用的编译环境,从而把Linux上的软件在不修改源码的情况下编译为可直接在Win下的可执行文件.MinGW提供了一个完整的开源编程工具集,该工具集适用于MS-Windows应用程序的开发,并且不依赖于任何第三方C-Runtime DLLMinGW包括:GNU编译器集合(GCC),包括C,_mingw seup

随便推点

springboot【19】日志管理之使用AOP统一处理Web请求日志-程序员宅基地

文章浏览阅读3.4k次。AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容,它通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容,比如常见的有:打开数据库连接/关闭数据库连接、打开事务/关闭事务、记录日志等。基于AOP不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各

Python——列表排序和赋值_python 列表赋值-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏4次。(x, y表达式) for x in 列表1 for y in 列表2 if 条件表达式]根据可迭代对象参数iterable,返回一个新的排序后的列表。[x表达式for x in 列表if 条件表达式][x表达式for x in 列表if 条件表达式][x表达式for x in 列表if 条件表达式][x表达式for x in 列表if 条件表达式]返回一个将序列seq中的元素顺序反转的迭代器对象。根据一个列表中的每个元素通过某种运算或筛选得到另。不比较元素大小,直接将列表ls中的元素逆序。_python 列表赋值

Codeforces990 E. Post Lamps(复杂度分析)-程序员宅基地

文章浏览阅读121次。题意:解法:暴力跳的复杂度是O(n/1+n/2+....)=O(n*log).但是有m个位置被禁止了,每次遇到被禁止的位置,我们需要回退到左边第一个未被禁止的位置,然后放路灯,回退造成的额外复杂度大概是O(m/1+m/2....)=O(m*log)?总复杂度在可接受范围内.code:#include<bits/stdc++.h>#define int long longusing namespace std;const int maxm=2e6+5;int mark_e. post lamps

python3怎么调用百度搜索推广API,最新能成功的方法_百度api高级搜索-程序员宅基地

文章浏览阅读914次。最近需要用到百度竞价后台的关键词规划师,后台虽然也能查,但是只能单次查1000个,有时候有很大量词需要查的时候就感觉工作量那个巨大。。所以为了以后工作方便,想做一个工具,方便使用。查看百度营销api官方文档,找到你需要的api,例如我需要查的关键词规划师就是在辅助里面,当然你也可以用postman测试。这些调试工具测试通了以后就开始转成python吧,特别推荐postman里面可以直接把内容转化成代码,但是我就是在这个地方遇到了个大坑,我看别的作者也是用这个转代码的,结果没问题,但是我需要的_百度api高级搜索

How&nbsp;to&nbsp;Set&nbsp;Alert&nbsp;Thresholds_threshold must be numeric and non-nan, try sys.max-程序员宅基地

文章浏览阅读654次。Setting Alert ThresholdsFor each tablespace, you can setjust percent-full thresholds, just free-space-remaining thresholds,or both types of thresholds simultaneously. Setting either type ofthresho_threshold must be numeric and non-nan, try sys.maxsize for untruncated repre

noteexpress如何不生成校对报告_noteexpress校对报告-程序员宅基地

文章浏览阅读3.1k次。word----->noteexpress------>格式化--------》不打勾生成校对报告即可。Good luck. _noteexpress校对报告

推荐文章

热门文章

相关标签