首页 > 解决方案 > C#数据库表中日志条目的极端重复

问题描述

这个 C# 类在我的 Oracle DB 表中产生了很多重复,我如何优化修复它以不这样做,但仍然会生成日志/错误报告?我已经包含了创建日志的方法的代码。

DB表中重复的屏幕截图:

数据库表中的重复项

CreateLogEntryForAgent()

  public static ApplicationLogEntry CreateLogEntryForAgent(string logText, LogTypes type) {
        int agentId = 0;
        int applicationVersionId = 0;

        if(Environment.CurrentAgent.Value != null)
            agentId = Environment.CurrentAgent.Value.Id;

        if(Environment.CurrentApplication.Value != null &&
            Environment.CurrentApplication.Value.GetCurrentVersion() != null)
            applicationVersionId = Environment.CurrentApplication.Value.GetCurrentVersion().Id;

        return new ApplicationLogEntry(DateTime.Now,
                                       agentId,
                                       SystemVars.GetComputerName(),
                                       applicationVersionId,
                                       logText,
                                       type);
    }

创建错误日志条目()

 public static ApplicationLogEntry CreateErrorLogEntry(Exception exception, string applicationState) {
        if(exception == null)
            throw new ArgumentNullException("exception");

        int agentId = 0;
        int applicationVersionId = 0;

        if(Environment.CurrentAgent.Value != null)
            agentId = Environment.CurrentAgent.Value.Id;

        if(Environment.CurrentApplication.Value != null &&
           Environment.CurrentApplication.Value.GetCurrentVersion() != null)
            applicationVersionId = Environment.CurrentApplication.Value.GetCurrentVersion().Id;

        return new ApplicationLogEntry(DateTime.Now,
                                       agentId,
                                       SystemVars.GetComputerName(),
                                       applicationVersionId,
                                       ErrorLogging.CreateExceptionDescription(exception, SystemVars.GetAssemblyFullName(), applicationState, true),
                                       LogTypes.Error);
    }

创建报告日志条目

public static ApplicationLogEntry CreateReportLogEntry(XmlDocument report) {
        if(report == null)
            throw new ArgumentNullException("report");

        int agentId = 0;
        int applicationVersionId = 0;

        if(Environment.CurrentAgent.Value != null)
            agentId = Environment.CurrentAgent.Value.Id;

        if(Environment.CurrentApplication.Value != null &&
           Environment.CurrentApplication.Value.GetCurrentVersion() != null)
            applicationVersionId = Environment.CurrentApplication.Value.GetCurrentVersion().Id;

        return new ApplicationLogEntry(DateTime.Now,
                                       agentId,
                                       SystemVars.GetComputerName(),
                                       applicationVersionId,
                                       report.OuterXml,
                                       LogTypes.Report);
    }

方法调用的一个例子

if(SystemVars.IsProductionEnvironment())
            ApplicationLog.LogEvent(ApplicationLogEntry.CreateLogEntryForAgent("Application Closed", LogTypes.Notification));

标签: c#databasevisual-studio-2010database-designduplicates

解决方案


推荐阅读