設定ファイルからログの出力先を読み、そこにその(設定ファイルを読んでいる)アプリケーションのログを出力させたいのですが、以下の問題点があります。
1.複数のクラスがあるため、普通にログ出力用のクラスを作ると、各クラスでインスタンスを作成せねばならない。
2.上記の場合、出力先は設定ファイルによって後から与えられるので、引数などによってファイルパスをもらわなければならない。
3.ログファイル名は「yyyyMMddHHmmss.log」となっているため検索が困難であるから、(1.の方法だと)ファイル名も渡してやる必要がある。
4.ERRORやFATALのみならアプリが終了してもかまわないのでthrowを使ってcatchでログを一括、ということもできるが、TRACEやDEBUGも出力させる必要がある。
Console.Writeのような感じで扱えるのが理想です。
何かよい方法はないものでしょうか?
普通にログ用のクラスを宣言して、他のクラスでログを出力したいなら、ログ出力クラスのインスタンスをコンストラクタに与える引数とするしかないでしょうか?
No.1ベストアンサー
- 回答日時:
staticにすればいいんじゃないですか?
static class Logger { static public void Write(string s) { ... } }
とかして、どっかで初期化(ファイル名の設定など)しとけば、後はいつでも
Logger.Write("hoge")
で。
No.2
- 回答日時:
#1の方に補足。
/// <summary>
/// テキストログパス
/// </summary>
public static string LOG_FILE_PATH = string.Empty;
を、ログ書くクラスに追加してやり、設定ファイルを読み込んだ時点で、パスを与えてやればいいかと思います。
また、1~3はログ書き出しに関することですが、4に関してはプログラム設計の問題ですよね?この辺はちゃんと切り分けておいた方がいいと思います。
また余談ですが、ログ書き出しクラスを生成する場合、ファイルIOでエラーは吐く場合もあるので、catchしたらリトライして書き出す処理を付けておくと、あとでちょっとだけ楽になります。
この回答への補足
有難うございます。
イメージとしては
static ログ出力クラス{
public static string LOG_FILE_PATH = string.Empty;
(ログ出力のためのメソッドなど)
}
設定ファイルを読むクラス{
設定を読むメソッド{
設定を読む;
ログ出力クラス.LOG_FILE_PATH;
}
}
という感じでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの時刻の形式について
-
accessでクエリをExcelにエクス...
-
ACCESS2002(or2003)の日付表示...
-
社員情報
-
ファイナルカットで編集した動...
-
VB6.0でExcel,PDF,Word出力方法
-
COBOL、項目末尾に空白がある場...
-
accessのリポートを、excelに出...
-
Thunderbird 受信メールからの...
-
フォルダ内のサブフォルダ名や...
-
Apacheのエラーログのログレベ...
-
コマンドプロンプトのテキスト...
-
EXCEL VBAでのCSVファイル読み...
-
AccessのレポートからPDFをペー...
-
HTMLテキストリンクでExcelファ...
-
includeで別サイトを読み込む
-
Excel VBAが徐々に遅くなる
-
VBAでフォルダ内の全てのcsv...
-
ATTファイルってどうやって開け...
-
C#で文字列リソースを扱う
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでクエリをExcelにエクス...
-
CSVファイルの時刻の形式について
-
コマンドプロンプトのテキスト...
-
COBOL、項目末尾に空白がある場...
-
Thunderbird 受信メールからの...
-
VB6.0でExcel,PDF,Word出力方法
-
ショートカットで起動した場合...
-
AccessのレポートからPDFをペー...
-
accessのリポートを、excelに出...
-
Acrobat参照設定
-
Excel で「OLE は現在使用でき...
-
ファイナルカットで編集した動...
-
WshShellから起動したbat(ftp)...
-
COBOL FILLER
-
エクセルが裏で動いたままなん...
-
Fortranでの出力ファイル
-
マクロについて質問です。 現在...
-
iTextでPDFを表示させたら日本...
-
TransferSpreadsheetでフルパス...
-
ACCESS2002(or2003)の日付表示...
おすすめ情報