国产探花免费观看_亚洲丰满少妇自慰呻吟_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#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郯城县| 达拉特旗| 吴川市| 金平| 清流县| 铁岭县| 沈丘县| 棋牌| 津南区| 靖宇县| 绥棱县| 沈阳市| 淮北市| 铜陵市| 浏阳市| 灵石县| 遂平县| 平潭县| 万载县| 噶尔县| 双辽市| 儋州市| 锡林浩特市| 溆浦县| 彝良县| 连南| 阜阳市| 恩平市| 新建县| 仁寿县| 华阴市| 徐闻县| 台州市| 隆尧县| 三河市| 淮北市| 定州市| 华亭县| 应城市| 阿拉尔市| 东方市|