登录Winform应用程序

uhu*_*uhu 4 c# logging auditing winforms

初始情况:在后台有一个包含许多对话框和Oracle数据库的大型Winform应用程序.现在需要实现审计日志记录功能,该功能在一些对话框中记录用户的数据更改(之前/之后)(以供公司审计部门稍后审计).您将如何集成此类日志记录功能?顺便说一下,日志信息应该保存在数据库(历史表)中,Winform-solution的管理应用程序应该为日志记录数据提供一个浏览器对话框.

是否存在可以使用的现有解决方案或框架.在这种情况下使用像NLOG这样的日志框架是否有意义,或者从头开始实现这样的特定日志记录更好?

Aar*_*ing 6

我创建了一个非常简单的静态类,名为Logger,它只有一个方法,它接受一个字符串并使用StreamWriter记录当前的DateTime.我喜欢编写自己的日志,因为它允许我按照我想要的格式化输出.以下是我的样子的简短示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace LoggerSpace
{
    public static class Logger
    {
        private static StreamWriter swLog;
        private const string sLOG_FILE_PATH = "log.txt";    

        static Logger()
        {
            Logger.OpenLogger();
        }

        public static void OpenLogger()
        {
            Logger.swLog = new StreamWriter(sLOG_FILE_PATH, false);
            Logger.swLog.AutoFlush = true;
        }

        public static void LogThisLine(string sLogLine)
        {
            Logger.swLog.WriteLine(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + "\t:" + "\t" + sLogLine);
            Logger.swLog.Flush();
        }

        public static void CloseLogger()
        {
            Logger.swLog.Flush();
            Logger.swLog.Close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您必须确保捕获适当的异常,并在表单关闭时调用close方法.同样,我喜欢它,因为它很简单,我可以根据自己的喜好对其进行格式化.我也看到过人们写的地方,在他们记录的行中的某些关键字生成空格的地方.只是一个建议,有很多选择.