ログファイルをサポート電子メールに自動的に添付すると便利です。私はプログラム的にパスを設定することができます(Setting Logback Appender path programmatically)が、私はユーザがlogback.xml
経由でよく知られた方法でロギングを設定できるようにしたいと考えています。では、ロギングにログバックを使用するファイルを見つけることはできますか?ログバックログファイルをプログラムで見つけることはできますか?
答えて
特定のコンテキストですべてのアペンダーのリストを取得できます。これを行うには:
LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
for (Logger logger : context.getLoggerList()) {
for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders(); index.hasNext();) {
Appender<ILoggingEvent> appender = index.next();
}
}
これは、現在のコンテキストのすべてのロガーのすべてのアペンダーのリストを反復処理します。
iteratorForAppendersメソッドは、ロガーではもう存在しません(http://www.slf4j.org/apidocs/org/slf4j/Logger.html)。どのように今、どのような考えですか? – user3885927
@ user3885927 org.slf4j.Loggerではなくch.qos.logback.classic.Loggerをインポートしていることを確認してください! – Catchwa
@ tafoo85で与えられた答えは正しいですが、それはあなたにアペンダーだけを与えるでしょう。
Logback Loggerで使用されるファイルをより具体的に取得するには、以下のコードを参考にしてください。
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());
'fileEntryElement = index.next();'行を 'Appender
@ダニアルは、より具体的になります。 2-3ファイルロガー(デバッグとトレース)が必要な場合、このコードは完全に機能します。 – androidnoobdev
- 1. は、Microsoft.Office.Interop.Excelを見つけることができません。私のC#プログラムで
- 2. マングースはフィールドで見つけることができますか?
- 3. このCプログラムのバグを見つけることができません
- 4. TimeZoneDisplayNameでTimeZoneByIdを見つけることができますか?
- 5. Macでプログラム>>を見つけることができません
- 6. プログラムでnull例外を見つけることができません
- 7. どこでMicrosoft.Build.Utilities.v3.5を見つけることができます
- 8. TestStack.Whiteなぜ私はApplication.GetWindowsでウィンドウを見つけることができますが、.GetWindowでは見つけることができませんか?
- 9. 私はTPCLプログラミングマニュアルを見つけることができます
- 10. 私は入力パネルを見つけることができますが、私はツールボックスでそれを見つけることができませんか?
- 11. Javaプログラムがcom.mongodb.Blockを見つけることができません
- 12. ここで、javax.validation。*の実装を見つけることができますか?
- 13. n2nコンセンサスアルゴリズム情報はどこで見つけることができますか?
- 14. Umbracoフリースキンはどこで見つけることができますか
- 15. フラッシュデバッグプロトコルの仕様はどこで見つけることができますか?
- 16. .ipa、ここで私はそれを見つけることができます
- 17. ここで私はExt.ux.CheckColumnを見つけることができます
- 18. どこでCGALで.cppファイルを見つけることができますか?
- 19. JXTAでNetworkManager.RecursiveDelete()をどこで見つけることができますか?
- 20. どこでspiteでsqliteデータベースを見つけることができますか?
- 21. どこでメゾでサービスを見つけることができますか
- 22. このWindowsバッチスクリプトがnet.exeプログラムを見つけることができないのはなぜですか?
- 23. なぜSelenium&PhantomJSはタグを見つけることができませんが、Selenium&Chromedriverはタグを見つけることができますか?
- 24. ListOrderedMapを見つけることができませんか?
- 25. herokuはCSSを見つけることができません
- 26. はWindowsコマンドレットを見つけることができません
- 27. C++はSQLite3を見つけることができません
- 28. はシンボルクラスKeyEventを見つけることができません
- 29. PHPはクラスファイルを見つけることができません
- 30. Intellijはcommons.dbcp2を見つけることができません
申し訳ありませんが、私は質問を理解できません。少し拡大できますか? – Ceki
@Ceki:より一般的には、Logbackで使用されるすべてのアペンダーのリストを取得できますか? –