最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C#實現(xiàn)寫入系統(tǒng)日志

 更新時間:2018年01月14日 08:59:36   作者:林德熙  
本文給大家分享的是作者使用使用C#實現(xiàn)將軟件日志寫入系統(tǒng)日志中的方法,十分巧妙,有需要的小伙伴可以參考下

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

首先告訴大家什么是系統(tǒng)日志,請看下面

如果需要寫日志,需要管理員權(quán)限,如果沒有權(quán)限會出現(xiàn)下面異常

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

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

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

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

寫日志

寫日志就不用管理權(quán)限

寫入可以使用 WriteEntry ,需要傳入寫入的日志和內(nèi)容

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

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

 

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace ConsoleApp
{
 /// <summary>
 /// 系統(tǒng)日志
 /// </summary>
 public class PackSystemEventLog
 {
  /// <summary>
  /// 錯誤信息
  /// </summary>
  private static string ErrorInfo { get; set; }
  /// <summary>
  /// 創(chuàng)建系統(tǒng)事件日志分類
  /// </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>
  /// 刪除系統(tǒng)事件日志分類
  /// </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>
  /// 向系統(tǒng)日志中寫入日志
  /// </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>
  /// 刪除事件源中l(wèi)ogName(好像刪除了所有的該分類的日志)
  /// </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# 泛型類的應用

    淺談c# 泛型類的應用

    本篇文章是對c#中泛型類的應用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#實現(xiàn)多線程的同步方法實例分析

    C#實現(xiàn)多線程的同步方法實例分析

    這篇文章主要介紹了C#實現(xiàn)多線程的同步方法,實例分析了C#線程同步的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • 解決C#全屏幕截圖的實現(xiàn)方法

    解決C#全屏幕截圖的實現(xiàn)方法

    本篇文章是對在C#中實現(xiàn)全屏幕截圖的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#中嵌入SQLite數(shù)據(jù)庫的簡單方法

    C#中嵌入SQLite數(shù)據(jù)庫的簡單方法

    本文給大家介紹的是C#中嵌入SQLite數(shù)據(jù)庫的簡單方法,十分的方便也很實用,有需要的小伙伴可以參考下。
    2015-06-06
  • C#生成單頁靜態(tài)頁簡單實例

    C#生成單頁靜態(tài)頁簡單實例

    這篇文章主要介紹了C#生成單頁靜態(tài)頁簡單實例,是一個非常實用的技巧,需要的朋友可以參考下
    2014-10-10
  • C#連接SQL?Sever數(shù)據(jù)庫詳細圖文教程

    C#連接SQL?Sever數(shù)據(jù)庫詳細圖文教程

    C#是Microsoft公司為.NET Framework推出的重量級語言,和它搭配最完美的數(shù)據(jù)庫無疑就是Microsoft SQL Server了,下面這篇文章主要給大家介紹了關于C#連接SQL?Sever數(shù)據(jù)庫的詳細圖文教程,需要的朋友可以參考下
    2023-06-06
  • 基于C#實現(xiàn)語音預處理

    基于C#實現(xiàn)語音預處理

    無論是在音視頻錄制系統(tǒng),還是音視頻通話系統(tǒng)或視頻會議系統(tǒng)中,對從麥克風采集到的說話的聲音數(shù)據(jù)進行預處理,都是是非常必要的,下面就跟隨小編一起來學習一下如何使用C#實現(xiàn)語音預處理吧
    2025-06-06
  • FileShare枚舉的使用小結(jié)(文件讀寫鎖)

    FileShare枚舉的使用小結(jié)(文件讀寫鎖)

    其實/FileShare就是控制文件流的“訪問權(quán)限”,當然,這僅僅是入門的文件操作,自己做了筆記,也希望能給大家?guī)韼椭?/div> 2014-01-01
  • unity自帶尋路(導航)系統(tǒng) Nav Mesh導航網(wǎng)格

    unity自帶尋路(導航)系統(tǒng) Nav Mesh導航網(wǎng)格

    這篇文章主要為大家詳細介紹了unity自帶尋路(導航)系統(tǒng),Nav Mesh導航網(wǎng)格,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C#實現(xiàn)圖表中鼠標移動并顯示數(shù)據(jù)

    C#實現(xiàn)圖表中鼠標移動并顯示數(shù)據(jù)

    這篇文章主要為大家詳細介紹了C#實現(xiàn)圖表中鼠標移動并顯示數(shù)據(jù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論

东丰县| 泌阳县| 安吉县| 油尖旺区| 阳谷县| 贵南县| 廊坊市| 乳山市| 麻江县| 突泉县| 庆安县| 铅山县| 宁强县| 华阴市| 共和县| 津南区| 平江县| 沂源县| 咸宁市| 龙海市| 临颍县| 屏南县| 海兴县| 旬邑县| 杭锦旗| 囊谦县| 南溪县| 烟台市| 白山市| 长武县| 枝江市| 当涂县| 白河县| 琼海市| 利津县| 阿尔山市| 正宁县| 济阳县| 乌审旗| 新田县| 喀喇沁旗|