2011-09-26 157 views
0

我正在創建一個我需要提供給客戶端的jar文件,但是我的客戶端要求爲jar文件提供單獨的記錄器,因爲這是在執行一些集成工作。需要爲jar文件創建單獨的日誌文件嗎?

任何人都可以建議如何創建只有一個jar文件的記錄器,我可以把log4j.properties放在同一個jar文件中。

我正在使用網絡邏輯服務器。我們不會部署這個jar文件,而是將它保留在域lib文件夾中。

感謝

回答

1

如果屬性文件是在罐子裏,那麼你可以做這樣的事情:

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的文件從你的類在你的罐子送什麼東西給一個新的日誌文件,像這樣:

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 
+0

感謝你好,如果我們對這個創建靜態函數,則「的getClass( ).getResourceAsStream(「/ log4j.properties」)「行不會工作,我們可以爲此做任何其他事情。 – Pedantic

+2

您可以使用類名稱,但並不總是理想的,但可以執行'MyClass.class.getResourceAsStream(「/ log4j.properties」)''。如果你不知道什麼原因,那麼你需要使用反射或堆棧跟蹤 - 即getStackTrace - Thread.currentThread()。getStackTrace()[0] .getClass()。getResourceAsStream(「/ log4j.props」)'你將不得不嘗試確定你想要的確切索引。 – NightWolf