我想这样做:
<appender name="ErrorLog" class="org.apache.log4j.FileAppender">
<param name="File" value="${error.log.path}"/>
<param name="Append" value="true" />
<param name="Threshold" value="ERROR"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%C{1} %L [%t] %d{dd MMM,yyyy HH:mm:ss.SSS} %-5p - %m%n" />
</layout>
</appender>
注意这一行: <param name="File" value="${error.log.path}"/>
我试图设置这样的值:
public static void main(String[] args) {
System.setProperty("error.log.path", "/test/crm/log/error.log");
ApplicationContext context = new ClassPathXmlApplicationContext("blah.xml");
..........
..........
}
但我看不到任何效果。
在调用main
方法之前是否已配置log4j ?
还有其他方法吗?
看来您做对了所有事情。我认为在主类中设置属性与System.setProperty()
通过命令行指定属性之间没有任何区别,只要它发生在实际的log4j初始化之前即可。
我认为您的问题是 在 指定属性 之前已
加载日志记录框架。我可以说在调用配置器时将配置日志记录框架(log4j)。这样的东西BasicConfigurator.configure()
(在您的情况下为xml配置器)。
否则,首次尝试使用日志记录将导致出现诸如“ log4j配置不正确”之类的消息。
真正的问题是您的带有“ main”的代码片段是否没有被简化。
考虑到这一点,我还要问另一个问题-
您是在某个容器中运行还是在运行真正的香草方法main并自行配置所有内容?我问是因为如果您在容器中运行,则很有可能容器本身会以某种方式配置其日志记录,例如JBoss会这样做。在这种情况下,需要进行更多调查。
希望这可以帮助
作为日志记录工具,我使用Log4j2,这是通过使用系统属性(/VM参数)调用的,使用: 为了编译我的项目,我使用Maven并创建exe文件Launch4j(Plugin:com.akatast.Maven.plugins.Launch4j)。 我的pom中的插件定义。xml如下所示: 我现在的问题是: 如何设置log4j2集成的系统属性?! 如果试图用“opt”将其置于括号中(http://lau
问题内容: 是否可以在log4j xml配置文件中引用系统环境变量(与Java系统属性相反)? 我希望能够执行以下操作: 并使其从系统环境变量中获取,因此我可以避免必须通过-D参数传递太多内容。 问题答案: 仅在log4j 2.X中记录了此语法,因此请确保使用正确的版本。它不适用于1.X版本。
我正在使用log4j管理Clojure应用程序中的日志记录。我希望能够使用系统变量为log4j中的单个包设置日志级别。属性文件。例如,下面是我的基本属性文件: 这将日志级别设置为中的DEBUG(特定日志代码所在的位置)。然而,我不希望这样——我希望它在本地是调试的,在生产上是信息的。所以,我使用一个环境变量: 这个实例中的设置为,我可以通过使用环境变量将日志级别设置为DEBUG来确认它是否可以正常
我想编写一些测试,检查部署的WAR的XML Spring配置。不幸的是,有些bean需要设置一些环境变量或系统属性。在使用@ContextConfiguration的方便测试样式时,如何在spring bean初始化之前设置环境变量?
问题内容: 我想编写一些测试来检查已部署WAR的XML Spring配置。不幸的是,某些bean需要设置一些环境变量或系统属性。通过@ContextConfiguration使用便捷的测试样式时,如何在初始化Spring bean之前设置环境变量? 如果我用注释配置应用程序上下文,那么在初始化spring上下文之前,我看不到钩子可以在其中做些事情。 问题答案: 您可以在静态初始化程序中初始化Sys
问题内容: JVM中的系统属性System.getProperties()和环境变量System.getenv()有什么区别? 问题答案: 我认为两者之间的区别归结为访问。系统环境变量可以由任何进程访问,而Java系统属性只能由添加到它们的进程访问。 另外,正如Bohemian所说,env变量是在OS中设置的(但是可以通过Java设置),而系统属性则作为命令行选项传递或通过设置setPropert