當前位置:首頁 » 編程軟體 » log4j編譯

log4j編譯

發布時間: 2022-12-07 04:02:10

1. java工程中如何使用log4j輸出指定路徑日誌文件,是java工程,不是web工程,謝謝

此文檔放在項目編譯文件.class相同的位置
### set log levels ###log4j.rootLogger = debug , stdout , D### 輸出到控制台 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n### 輸出到日誌文件 ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUGlog4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n### 保存異常信息到單獨文件 ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = logs/error.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = ERRORlog4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
配置獲取方法:
PropertyConfigurator.configure( "D:\\Project Files\\myeclipse\\commontest\\bin\\log\\log4j\\log4j.properties" );
Logger log=Logger. getLogger(TestLog4j.class);
log.warn( "嘿嘿");
log.debug( "嗚嗚");
log.error( "錯啦");

2. 把日誌從log4j轉換成logback的經歷

既然log4j1.x出問題了,之前用logback的時候又覺得挺爽了,那麼就抓緊換吧,老規矩,方案先行。經過一番調查研究,制定如下戰略:

對上面的幾個jar解釋下:

這個可以通過idea的maven插件的Show Dependencies功能查看有那些包依賴了log4j,然後一一配置exclusion。maven本身沒有全局排除的功能,這個確實比較郁悶。另外發現有神人說可以通過在私服上發布一個空的相同groupId+artifactId的jar來替換掉這些依賴,個人感覺還是有點難以接受,感興趣的同學可以去試試。

步驟同上一步;

具體配置的內容就不貼了,有興趣的看 官方文檔 。這裡面關於logger的配置特別說明一下,在網上看到很多示例配置都是錯的。

logger的additivity如果設置成false的話(默認是true),那麼一定要給logger加上appender,否則符合該規則的日誌都不會輸出。

使用該插件後,在編譯的時候就會檢查是否有log4j和common-logging的包被依賴了,如果有則編譯會不通過(雖然不能做全局的排除,但是好歹做個全局檢查吧 -_-!!!)。
但這里也有個不爽的地方,父子項目是不能繼承的,每個項目都需要設置;

3. windows下用命令行編譯並運行java工程,怎樣編譯引用的多個jar包和配置文件.xml呢

javac -classpath c:\lib\log4j.jar;D:\lib\logging.jar src\org\myproject\*.java

還可以指定輸出目錄,如輸出到bin(bin目錄要預告建立好)
javac -classpath c:\lib\log4j.jar;D:\lib\logging.jar -d bin src\org\myproject\*.java

至於配置文件,因為要看實際的使用,可以用命令拷貝。如拷貝log4j.properties
/y myConfig\log4j.properties bin

4. log4j 支持環境變數嗎

修改 log4j 代碼 以支持在 log4j.properties 設置環境變數

http://logging.apache.org/site/binindex.cgi
源碼進行瀏覽後,估計需要修改的文件應該是
src\java\org\apache\log4j\helpers\OptionConverter.java
在這個文件可以看到,log4j 對 ${} 這種形式的變數會進行以下轉換
// first try in System properties
String replacement = getSystemProperty(key, null);
// then try props parameter
if(replacement == null && props != null) {
replacement = props.getProperty(key);
}
就是說,會先從系統變數中讀取屬性值,如果系統變數不存在這個屬性,就從log4j配置文件中屬性中讀取.
問題就在這里了!
並沒有從環境變數中讀取,因此,增加一個函數:
public
static
String getEnvProperty(String key, String def) {
try {
String value = System.getenv(key);
if (value == null)
value = def;
return value;
} catch(Throwable e) { // MS-Java throws com.ms.security.SecurityExceptionEx
LogLog.debug("Was not allowed to read system property \""+key+"\".");
return def;
}
}
是的,通過調用 System.getenv() ,就可以從環境變數中讀取屬性值了.
再修改剛才的代碼

// first try in System properties
String replacement = getSystemProperty(key, null);
// then try in environment properties
if (replacement == null)
{
replacement = getEnvProperty(key, null);
}
// then try props parameter
if(replacement == null && props != null) {
replacement = props.getProperty(key);
}
ok, 代碼修改工作完畢, 現在需要編譯了.(當然,你需要先安裝 ant 和 java. 以後我貼相應的安裝文檔出來.)
在 logging-log4j-1.2.11 目錄下輸入
ant
會提示要加參數,所以改為輸入
ant build
編譯通過,但發現有其它問題,不過不要緊了,已經有這個文件就可以了
logging-log4j-1.2.11\dist\classes\org\apache\log4j\helpers\OptionConverter.class
要正常生成 jar 文件,可能需要其它庫文件支持,但不是我研究的方向了.
我只要把這個 OptionConverter.class 放到 log4j-1.2.11.jar 文件里, 替換掉舊的 OptionConverter.class 就可以了.
howto? easy job. 用 winrar 打開 log4j-1.2.11.jar, 用新的 OptionConverter.class 覆蓋掉舊的, done!
最後一步, 把這個新的log4j-1.2.11.jar 布署到你的系統中,就可以了.
或者改一個名字? log4j-1.2.11-pro.jar ? 增強版~ 咔咔, well done!

熱點內容
工程加密網 發布:2024-05-03 14:59:55 瀏覽:292
吃冰球解壓 發布:2024-05-03 14:59:10 瀏覽:895
編譯晶元發燙 發布:2024-05-03 14:59:05 瀏覽:549
優化演算法pdf 發布:2024-05-03 14:18:10 瀏覽:291
python演算法書 發布:2024-05-03 14:14:25 瀏覽:736
方舟怎麼加入伺服器閃退 發布:2024-05-03 14:05:27 瀏覽:491
安卓心跳怎麼打出來 發布:2024-05-03 13:59:23 瀏覽:100
存儲標准性 發布:2024-05-03 13:37:07 瀏覽:416
液鹼存儲 發布:2024-05-03 13:21:13 瀏覽:156
linux如何改配置文件 發布:2024-05-03 13:00:54 瀏覽:31