自動附加日誌文件以支持電子郵件會很有用。我可以通過程序設置路徑(如Setting Logback Appender path programmatically),但我更願意讓用戶通過logback.xml
以熟悉的方式配置日誌記錄。那麼,我可以找到logback用於記錄日誌的文件嗎?是否有可能以編程方式查找logback日誌文件?
回答
您可以在特定的上下文中獲取所有appender的列表。要做到這一點:
LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
for (Logger logger : context.getLoggerList()) {
for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders(); index.hasNext();) {
Appender<ILoggingEvent> appender = index.next();
}
}
這遍歷當前上下文的所有記錄器中的所有appender的列表。
iteratorForAppenders方法在logger(http://www.slf4j.org/apidocs/org/slf4j/Logger.html)上不再存在。任何想法現在如何工作? – user3885927
@ user3885927確保你正在導入ch.qos.logback.classic.Logger而不是org.slf4j.Logger! – Catchwa
@ tafoo85給出的答案是正確的,但它只會給你appender。
要更具體地獲取文件使用的Logback記錄器,我希望下面的代碼將幫助一些。
File clientLogFile;
FileAppender<?> fileAppender = null;
LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
for (Logger logger : context.getLoggerList())
{
for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders();
index.hasNext();)
{
Object enumElement = index.next();
if (enumElement instanceof FileAppender) {
fileAppender=(FileAppender<?>)enumElement;
}
}
}
if (fileAppender != null) {
clientLogFile=new File(fileAppender.getFile());
}
else {
clientLogFile = null;
}
Log.d("logfile path", clientLogFile.getAbsolutePath());
正是我所需要的,儘管我將'Object enumElement = index.next();'改成了'Appender
@danial將更具體。但如果你想要2-3檔案記錄器(調試和跟蹤),那麼這段代碼將完美工作。 – androidnoobdev
- 1. 以編程方式查找PHP錯誤日誌文件
- 2. 是否有可能以編程方式運行.scf文件
- 3. 的logback - 集日誌文件名編程
- 4. logback以編程方式創建一個新的日誌實例
- 5. 是否有可能以編程方式升級Android固件?
- 6. 是否有可能以編程方式觸發onbeforeunload事件?
- 7. 是否有可能以編程方式「清理」電子郵件?
- 8. 以編程方式TimeBasedRollingPolicy logback
- 9. 是否有可能以編程方式從文件啓動php交互式shell?
- 10. 是否可以使用bunyan cli格式化程序來處理logback日誌?
- 11. 是否有可能以編程方式檢查.NET控件何時啓動UAC?
- 12. 是否可以在logback中將日誌寫入scr/main/resources?
- 13. 是否有可能以編程方式將文件推送到無線SD卡?
- 14. 是否有可能以編程方式下載.scn文件並運行它?
- 15. 是否有可能以編程方式創建ant構建文件?
- 16. 是否有可能以編程方式在Cocoa中打印IKImageBrowserView?
- 17. 是否有可能以編程方式設置Qtip的位置?
- 18. 是否有可能以編程方式更改PieRenderer?
- 19. 是否有可能以編程方式修改ATS設置
- 20. 是否有可能以編程方式填寫Ajax表單?
- 21. 是否有可能以編程方式拋出APPWIDGET_UPDATE的意圖?
- 22. 是否有可能以編程方式添加圖片?
- 23. 是否有可能以編程方式創建Google API KEY?
- 24. 是否有可能以編程方式隱藏停靠圖標
- 25. 是否有可能以編程方式創建BackgroundWorkers?
- 26. 是否有可能以編程方式更改FLV的幀頻?
- 27. 是否有可能以編程方式抑制MessageBoxes?
- 28. 以編程方式暫停mpmovieplayercontroller - 是否有可能?
- 29. 是否有可能以編程方式阻止Windows關閉?
- 30. 是否有可能以編程方式設置MasterType?
對不起,但我不明白這個問題。你能擴展一下嗎? – Ceki
@Ceki:更一般地說,我可以得到Logback使用的所有appender列表嗎? –