Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie XML-Dateien, um Betriebsprotokolle aufzuzeichnen

Verwenden Sie XML-Dateien, um Betriebsprotokolle aufzuzeichnen

黄舟
黄舟Original
2017-02-27 16:27:332368Durchsuche

Für die Aufzeichnung von Anwendungsbetriebsprotokollen können Datenbanken, Textdateien, XML-Dateien usw. verwendet werden. Was ich hier vorstelle, ist die Verwendung von XML-Dateien zum Aufzeichnen von Betriebsprotokollen.
Ich denke, die Verwendung von XML zum Aufzeichnen von Betriebsprotokollen hat die folgenden Vorteile:
1. Es belegt keinen Datenbankspeicherplatz und historische Betriebsprotokolle können beliebig gelöscht werden.
2. DataTable kann problemlos XML-Dateien lesen und DataTable kann auch problemlos als XML-Dateien gespeichert werden.
3. Es ist praktisch, das Protokoll anzuzeigen. Sie können die XML-Datei direkt öffnen, um sie anzuzeigen, oder Sie können sie in die DataTable einlesen und sie dann über das Programm anzeigen.

Die Methode zur Verwendung von XML-Dateien zum Aufzeichnen von Betriebsprotokollen in VS2005 ist wie folgt:
1. Erstellen Sie einen Datensatz: JobLogDataSet.xsd
Dies umfasst: TraceLevel (Protokolltyp), Benutzer (Benutzer). ), DateTime (Operationszeit), Modul (Modul), Funktion (Funktion), Nachricht (Nachricht) 6 Felder.
Wenn dies nicht ausreicht, fügen Sie selbst weitere hinzu, wobei sich TraceLevel (Protokolltyp) auf „Info“, „Warnung“, „Fehler“, „Trance“ und „Aus“ bezieht.

2. Protokolltyp erstellen

/// <summary>
    /// 日志类型
    /// </summary>
    public enum LogType 
    { 
        /// <summary>
        /// 信息
        /// </summary>
        Info, 
        /// <summary>
        /// 警告
        /// </summary>
        Warning,
        /// <summary>
        /// 错误
        /// </summary>
        Error, 
        /// <summary>
        /// 跟踪
        /// </summary>
        Trace, 
        /// <summary>
        /// 不记录日志
        /// </summary>
        Off 
    }

2. Methode zum Schreiben des Protokolls

  /// <summary>
    /// 写日志
    /// </summary>
    /// <param name="traceLevel">日志类型(Info,Warning,Error,Trance,Off)</param>
    /// <param name="user">用户</param>
    /// <param name="module">模块</param>
    /// <param name="function">功能</param>
    /// <param name="message">消息</param>
    public static void WriteLog(LogType logType,string user, string module, string function, string message)
    {
        try
        {
            // 类型为 LogType.Off 的 不记录日志
            if (logType == LogType.Off)
                return;
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();

// 每天一个日志文件(.XML 文件),日志的文件名称为:JobLog yyyy-MM-dd.xml
            string jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog " + 
                DateTime.Today.ToString("yyyy-MM-dd") + ".xml";
            if (!File.Exists(jobLogFile))
                t.WriteXml(jobLogFile);
// 从 .XML 文件中读取日志
            t.ReadXml(jobLogFile);
  // 添加一条日志
            JobLogDataSet.JobLogRow r = t.NewJobLogRow();
            r.TraceLevel = logType.ToString();
            r.User = user;
            r.Datetime = DateTime.Now;
            r.Module = module;
            r.Function = function;
            r.Message = message;
            t.AddJobLogRow(r);
           // 保存到日志到 XML 文件
            t.WriteXml(jobLogFile);
        }
        catch (Exception)
        {}
    }
3. So lesen Sie Protokolle



  /// <summary>
    /// 读日志
    /// </summary>
    /// <returns>返回读取日志的 DataTable</returns>
    public static JobLogDataSet.JobLogDataTable ReadLog()
    {
        JobLogDataSet.JobLogDataTable jobLogDataTable = new JobLogDataSet.JobLogDataTable();
        try
        {
            // 从应用程序文件夹中,获得所有日志文件 JobLog*.xml
            string[] jobLogFiles = Directory.GetFiles(
                AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly);
// 把每个日志记录读取到日志 DataTable 中
            foreach (string jobLogFile in jobLogFiles)
            {
                if (File.Exists(jobLogFile))
                {
                    // 读取所有日志文件到临时 DataTable
                    JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
                    t.ReadXml(jobLogFile);
                    // 导入日志记录到主日志 DataTable
                    foreach (JobLogDataSet.JobLogRow r in t)
                        jobLogDataTable.ImportRow(r);
                }
            }
            // 返回读取的日志 DataTable
            return jobLogDataTable;
        }
        catch (Exception)
        {
            return jobLogDataTable;
        }
    }
4. Wenn Sie ein Protokoll schreiben müssen, rufen Sie einfach die WriteLog-Methode direkt auf.


Das Obige ist der Inhalt der Verwendung von XML-Dateien zum Aufzeichnen von Betriebsprotokollen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn