我们有一个Java程序,它被打包为一个可运行的jar。使用log4j通过slf4j进行日志记录。我们将log4j.xml放在runnable jar之外 - 放到文件系统上。只要用户单击runnable jar,就会调用main方法,该方法调用该函数来加载log4j.xml文件。我的问题是如果加载log4j.xml本身失败了。如何记录该异常?记录器尚未初始化,据我所知,sys.out在这种情况下不会有用。以下是在调用main方法后立即调用的代码片段:
/* This method loads the log4j.xml file from local directory */
public static void loadLog4jXml(){
DOMConfigurator.configure( "C:\MyFirstJavaExecJar\log4j.xml" );
}
我试过谷歌搜索,但无法找到任何指针。还尝试浏览apache网站上的FAQ列表:http://logging.apache.org/log4j/2.x/faq.html
感谢任何帮助!
答案 0 :(得分:1)
为什么它不起作用只是用try catch blog封装代码并将其记录到Console或文件中,因为它不是经常发生的事情。
/* This method loads the log4j.xml file from local directory */
public static void loadLog4jXml(){
try{
DOMConfigurator.configure( "C:\MyFirstJavaExecJar\log4j.xml");
}
catch(Exception e){
System.out.println("There is a problem about log4J file loading");
}
}
好的,首先在使用try catch加载log4j文件时封装代码,如果在windows控制台中运行它,则控制台是此处的dos屏幕,因此如果在Windows运行时出现问题,请通过{ {1}}在这种情况下,它会将消息写入您的dos屏幕。或者,您可以为此jar提供文件路径并将日志写入此文件。或者您可以使用事件日志记录来获得更复杂的解决方案,请检查此discussion。