win-formアプリケーションでEnterpriseLibrary5.0を使用しています。
1.エンタープライズライブラリオブジェクトのインスタンスの作成について
ロギング/例外オブジェクトの参照を解決するための最良の方法は何ですか?私たちのアプリケーションでは、ソリューションにさまざまなアプリケーションがあります。したがって、ソリューションには以下のプロジェクトがあります。
CommonLib(Class Lib)CustomerApp(winform app)CustWinService(win service proj)ClassLib2(class Lib)
CommonLibプロジェクトで以下のようにロギング/例外を実装しました。以下のようにクラスAppLogを作成しました。
public class AppLog
{
public static LogWriter defaultWriter = EnterpriseLibraryContainer.Current.GetInstance<LogWriter>();
public static ExceptionManager exManager = EnterpriseLibraryContainer.Current.GetInstance<ExceptionManager>();
public AppLog()
{
}
public static void WriteLog(string LogMessage, string LogCategories)
{
// Create a LogEntry and populate the individual properties.
if (defaultWriter.IsLoggingEnabled())
{
string[] Logcat = LogCategories.Split(",".ToCharArray());
LogEntry entry2 = new LogEntry();
entry2.Categories = Logcat;
entry2.EventId = 9007;
entry2.Message = LogMessage;
entry2.Priority = 9;
entry2.Title = "Logging Block Examples";
defaultWriter.Write(entry2);
}
}
}
次に、さまざまなプロジェクトでのロギングと例外のために、以下のようにApplogクラスを使用しました。
try
{
AppLog.WriteLog("This is Production Log Entry.", "ExceCategory");
string strtest = string.Empty;
strtest = strtest.Substring(1);
}
catch (Exception ex)
{
bool rethrow = AppLog.exManager.HandleException(ex, "ExcePolicy");
}
では、ロギングと例外を使用する正しい方法は?または私がそれを改善できる他の方法はありますか?
2.動的なログファイル名
ロギングブロックには、app.configファイルで設定する必要のあるfileNameがあります。コーディングを通じてfileName値を動的に割り当てる方法はありますか?構成ファイルにハードコーディングしたくないので、本番環境と開発環境ではパスが異なります。
ありがとうTShah