質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

3940閲覧

Log4net でログの出力先をアプリから変更するには?

tooboy

総合スコア10

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2020/07/30 14:57

C# .NET Framawork で開発をしています。
ログの出力にLog4net を使用しています。
アプリの中でログの出力先の変更が可能な仕様です。
アプリ内からログの出力先を参照することはできました。また、メモリ上では設定(変更)もできました。
現在嵌っているのは次の点です。
・変更した出力先に書き込みたいのですが、その手順がわかりません。
ググってみると、動的に設定を生成、変更するという内容は見つけられるのですが、設定した内容を反映してログを出力するという内容は見つけれられませんでした。
おそらく一度ログの書き込みを終了(ファイルをクローズ)し、変更後の設定でファイルを作成して・・・、という手順になると思うのです。
どなたかご教示いただけないでしょうか?

ログファイルの出力先の変更については、以下を参考にしました。
https://stackoverflow.com/questions/95286/log4net-set-max-backup-files-on-rollingfileappender-with-rolling-date

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

以下の手順でアプリ起動中にログファイルのパスを変更し、反映することができました。
1.appender.File にパスを設定
appender.File = "hogehoge";
2.ActivateOptions() を実行
appender.ActivateOption();

参考リンク:https://garafu.blogspot.com/2014/05/log4net-add-appender.html

投稿2020/07/31 00:21

tooboy

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

設定値はXMLファイルとなっているため、
XMLファイルの基本的な読み書きで良いのではないでしょうか?
参考になりそうな記事をぐぐってみました。
https://www.sejuku.net/blog/86867

投稿2020/07/31 00:13

kikukiku

総合スコア514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tooboy

2020/07/31 00:16

回答ありがとうございます。 XMLファイルを変更することものちのち必要かと思うのですが、アプリ起動中に「1.設定を変える」「2.変更した設定でログを出力する」となると、メモリ上の問題となるので解決できないと思います。
kikukiku

2020/07/31 00:25

ということは、メモリ上で設定変更できたと記述されていますが、 実際には設定した通り動作していないということですね。 だとしたら、メモリ上で設定できていないということなのではないでしょうか? 動作中に変えたいということですので、今回は力になれそうにありません。 申し訳ないです。 もしメモリ上でうまく設定変更できなかったら、 わたしだったら、ログ取得先を変える行為は、アプリの再起動が必要と考えて、 設定ファイルを書き換えて、ユーザにアプリの再起動を促すように、 運用回避すると思います。
tooboy

2020/07/31 00:35

コメントありがとうございます。 最初の質問の時点でメモリ上で設定できていました。 ただ、実際のログの出力に反映されていませんでした。 そこでActivateOption()を実行したところ、出力先が反映されて設定したパスにログが書かれました。 しかし、この場合アプリを終了すると次の起動時には、XMLの設定でログ出力されてしまうので、工夫が必要です。 スマートなやり方ではありませんが、プロパティにも設定を保存して、 1.起動時にプロパティからメモリに反映、 2.変更時にメモリからプロパティに反映 という方法で対応しようと考えています。
kikukiku

2020/07/31 03:18

変更したタイミングで、XMLファイルも更新すれば良いように思いました。 同じ設定値を2つ持つことに違和感があります。 とんちんかんな回答だったようで、お力にはなれませんでしたが、 望み通りできて良かったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問