Maison  >  Article  >  développement back-end  >  Utiliser des fichiers XML pour enregistrer les journaux d'opérations

Utiliser des fichiers XML pour enregistrer les journaux d'opérations

黄舟
黄舟original
2017-02-27 16:27:332370parcourir

L'enregistrement des journaux d'opérations d'application peut utiliser des bases de données, des fichiers texte, des fichiers XML, etc. Ce que je présente ici, c'est l'utilisation de fichiers XML pour enregistrer les journaux d'opérations.
Je pense que l'utilisation de XML pour enregistrer les journaux d'opérations présente les avantages suivants :
1. Il n'occupe pas d'espace dans la base de données et les journaux d'opérations historiques peuvent être supprimés arbitrairement.
2. DataTable peut facilement lire les fichiers XML, et DataTable peut également être facilement enregistré sous forme de fichiers XML.
3. Il est pratique de visualiser le journal. Vous pouvez ouvrir directement le fichier XML pour le visualiser, ou vous pouvez le lire dans le DataTable puis le visualiser via le programme.

La méthode d'utilisation des fichiers XML pour enregistrer les journaux d'opérations dans VS2005 est la suivante :
1. Créez un ensemble de données : JobLogDataSet.xsd
Cela inclut : TraceLevel (type de journal), User (utilisateur ), DateTime (heure de l'opération), Module (module), Fonction (fonction), Message (message) 6 champs.
Si cela ne suffit pas, ajoutez-en davantage par vous-même, où TraceLevel (type de journal) fait référence à Info, Warning, Error, Trance, Off.

2. Créer un type de journal

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

2. Méthode d'écriture du journal

  /// <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 Comment lire les journaux

  /// <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. Chaque fois que vous avez besoin d'écrire un journal, appelez simplement la méthode WriteLog.

Ce qui précède est le contenu de l'utilisation de fichiers XML pour enregistrer les journaux d'opérations. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn