欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

因?yàn)槲也幌胧褂米约簩懳募?,我的軟件是綠色的,所以把日志寫到 Windows 日志。

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

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

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

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

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

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

寫日志

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

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

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

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

 

另外給大家附上一個(gè)完整例子

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>
  /// 錯(cuò)誤信息
  /// </summary>
  private static string ErrorInfo { get; set; }
  /// <summary>
  /// 創(chuàng)建系統(tǒng)事件日志分類
  /// </summary>
  /// <param name="eventSourceName">注冊事件源(比如說這個(gè)日志來源于某一個(gè)應(yīng)用程序)</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">日志文本分類(警告、信息、錯(cuò)誤)</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>
  /// 獲取錯(cuò)誤信息
  /// </summary>
  /// <returns></returns>
  public static string GetErrorMessage()
  {
   return ErrorInfo;
  }
 }
}

相關(guān)文章

最新評論