Java 需要为jar文件创建单独的日志文件吗?

Java 需要为jar文件创建单独的日志文件吗?,java,log4j,logging,Java,Log4j,Logging,我正在创建一个需要提供给客户机的jar文件,但我的客户机要求为jar文件提供单独的记录器,因为这是在做一些集成工作 任何人都可以建议我如何只为一个jar文件创建logger,我可以将log4j.properties放在同一个jar文件中吗 我正在使用web逻辑服务器。我们不会部署这个jar文件,而是将它保存在域库文件夹中 谢谢如果属性文件在jar中,那么您可以执行以下操作: Properties props = new Properties(); props.load(getClass().ge

我正在创建一个需要提供给客户机的jar文件,但我的客户机要求为jar文件提供单独的记录器,因为这是在做一些集成工作

任何人都可以建议我如何只为一个jar文件创建logger,我可以将log4j.properties放在同一个jar文件中吗

我正在使用web逻辑服务器。我们不会部署这个jar文件,而是将它保存在域库文件夹中


谢谢

如果属性文件在jar中,那么您可以执行以下操作:

Properties props = new Properties();
props.load(getClass().getResourceAsStream("/log4j.properties"));
PropertyConfigurator.configure(props);
以上假设log4j.properties位于jar文件的根文件夹中

在这种情况下,如果这不符合您的需要,则您可以始终使用:

-Dlog4j.configuration=log4j_for_some_jar.properties
如果其他应用程序也使用Log4j。更简单的方法是只配置log4j文件,将jar中的类中的任何内容发送到一个新的日志文件,如下所示:

log4j.rootLogger=ERROR, logfile

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.datePattern='-'dd'.log'
log4j.appender.logfile.File=log/radius-prod.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n

log4j.logger.foo.bar.Baz=DEBUG, myappender
log4j.additivity.foo.bar.Baz=false

log4j.appender.myappender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myappender.datePattern='-'dd'.log'
log4j.appender.myappender.File=log/access-ext-dmz-prod.log
log4j.appender.myappender.layout=org.apache.log4j.PatternLayout
log4j.appender.myappender.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n

您好,谢谢,如果我们正在为此创建静态函数,那么“getClass().getResourceAsStream(“/log4j.properties”)”行将不起作用,我们可以为此做任何其他事情。您可以只使用类名,这并不总是理想的,但您可以执行
MyClass.class.getResourceAsStream(“/log4j.properties”)
。如果出于任何原因无法使用,则需要考虑使用反射或堆栈跟踪,即getStackTrace-
Thread.currentThread().getStackTrace()[0].getClass().getResourceAsStream(“/log4j.props”)
您必须进行实验,以确定所需的确切索引。