国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

使用C#實現寫入系統日志

2019-10-29 21:06:19
字體:
來源:轉載
供稿:網友

因為我不想使用自己寫文件,我的軟件是綠色的,所以把日志寫到 Windows 日志。

首先告訴大家什么是系統日志,請看下面

c#,寫入系統日志,c#寫入系統日志,C#實現寫入系統日志

如果需要寫日志,需要管理員權限,如果沒有權限會出現下面異常

System.Security.SecurityException:“未找到源,但未能搜索某些或全部事件日志。 不可訪問的日志: Security

需要判斷當前是否已經存在日志,下面我來創建一個事件叫 “德熙”

if (EventLog.SourceExists("德熙"))  {  EventLog.CreateEventSource("德熙", "Application");  }

這里的 Application 就是寫到哪個,一般都是選 Application ,可以從圖片看到系統的有應用程序、安全、Setup、系統幾個日志,程序一般都是寫到程序

寫日志

寫日志就不用管理權限

寫入可以使用 WriteEntry ,需要傳入寫入的日志和內容

EventLog.WriteEntry("德熙", "有個不愿告訴你名稱的程序在這里寫字符串");

這個方法還有幾個重載,可以傳入日志類型,是成功、失敗還是其他。還可以傳入 id ,通過id 可以找到為什么需要寫日志,不過需要在自己定義,還可以添加附件,于是我就不需要自己寫文件日志。

c#,寫入系統日志,c#寫入系統日志,C#實現寫入系統日志

另外給大家附上一個完整例子

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Diagnostics;namespace ConsoleApp{ /// <summary> /// 系統日志 /// </summary> public class PackSystemEventLog {  /// <summary>  /// 錯誤信息  /// </summary>  private static string ErrorInfo { get; set; }  /// <summary>  /// 創建系統事件日志分類  /// </summary>  /// <param name="eventSourceName">注冊事件源(比如說這個日志來源于某一個應用程序)</param>  /// <param name="logName">日志名稱(事件列表顯示的名稱)</param>  /// <returns></returns>  public static bool CreateSystemEventLogCategory(string eventSourceName, string logName)  {   bool createResult = false;   try   {    if (!EventLog.SourceExists(eventSourceName))    {     EventLog.CreateEventSource(eventSourceName, logName);    }    createResult = true;   }   catch (Exception ex)   {    createResult = false;    ErrorInfo = ex.Message;   }   return createResult;  }  /// <summary>  /// 刪除系統事件日志分類  /// </summary>  /// <param name="eventSource">EventName事件源</param>  /// <returns></returns>  public static bool RemoveSystemEventSourceCategory(string eventSource)  {   bool createResult = false;   try   {    if (EventLog.SourceExists(eventSource))    {     EventLog.DeleteEventSource(eventSource, ".");    }    createResult = true;   }   catch (Exception ex)   {    createResult = false;    ErrorInfo = ex.Message;   }   return createResult;  }  /// <summary>  /// 向系統日志中寫入日志  /// </summary>  /// <param name="eventSource">事件源</param>  /// <param name="msg">寫入日志信息</param>  /// <param name="type">日志文本分類(警告、信息、錯誤)</param>  /// <returns></returns>  public static bool WriteSystemEventLog(string eventSource, string msg, EventLogEntryType type)  {   bool writeResult = false;   try   {    if (!EventLog.SourceExists(eventSource))    {     writeResult = false;     ErrorInfo = "日志分類不存在!";         }    else    {     EventLog.WriteEntry(eventSource, msg, type);     writeResult = true;    }   }   catch (Exception ex)   {    writeResult = false;    ErrorInfo = ex.Message;   }   return writeResult;  }  /// <summary>  /// 刪除事件源中logName(好像刪除了所有的該分類的日志)  /// </summary>  /// <param name="eventSource"></param>  /// <param name="logName"></param>  /// <returns></returns>  public static bool RemoveSystemEventLog(string eventSource, string logName)  {   bool removeResult = false;   try   {    if (!EventLog.SourceExists(eventSource))    {     removeResult = false;     ErrorInfo = "日志分類不存在!";    }    else    {     EventLog.Delete(logName);     removeResult = true;    }   }   catch (Exception ex)   {    removeResult = false;    ErrorInfo = ex.Message;   }   return removeResult;  }  /// <summary>  /// 獲取錯誤信息  /// </summary>  /// <returns></returns>  public static string GetErrorMessage()  {   return ErrorInfo;  } }}


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潞西市| 克山县| 德昌县| 环江| 建水县| 哈尔滨市| 安顺市| 石屏县| 兴山县| 灌阳县| 绥阳县| 贡嘎县| 华容县| 共和县| 泰宁县| 东海县| 航空| 岗巴县| 寿宁县| 灵武市| 乳山市| 肥乡县| 舟曲县| 北安市| 汝城县| 息烽县| 天峻县| 六枝特区| 肃宁县| 大港区| 福清市| 雅江县| 登封市| 上虞市| 青海省| 濮阳县| 牟定县| 安顺市| 美姑县| 田阳县| 永川市|