我在我的 win-form 应用程序中使用 Enterprise Library 5.0。
1.关于创建企业库对象的实例
解决日志记录/异常对象引用的最佳方法是什么?在我们的应用程序中,我们在解决方案中有不同的应用程序。所以解决方案有以下项目:
CommonLib(类库) CustomerApp(winform 应用程序) CustWinService(win 服务项目) ClassLib2(类库)
我在 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. 动态记录文件名
在日志记录块中,我们有 fileName 需要在 app.config 文件中设置。有没有办法可以通过编码动态分配文件名值?由于我不想在配置文件中对其进行硬编码,并且生产和开发环境的路径不同。
谢谢 TShah