ASP.Net預設情況下,是沒有寫系統日志的權限的。要在ASP.Net中寫系統日志,首先我們要先有其權限。我們可以通過設定或修改系統資料庫的權限來解決。
方法1:“開始->運作”,輸入指令,“regedt32”,找到“System->CurrentControlSet->Services->Eventlog”,選擇“安全->權限->添加”,然後找到本機的“AspNet”使用者,加進來并且給讀取權限就好了,加進來後目錄中會多一個“aspnet_wp account”
方法2:在系統資料庫:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\EventLog增加User的完全操縱權限
using System;
using System.Diagnostics;
using System.Text;
namespace CorePlus.Framework.Utility
{
/// <summary>
/// 寫日志的CLASS
/// </summary>
public class LogUtility
{
public enum EVENT
{
/// <summary>重大錯誤</summary>
EVENT_ERROR,
/// <summary>操作失敗</summary>
EVENT_FAILUREAUDIT,
/// <summary>一般資訊</summary>
EVENT_INFORMATION,
/// <summary>有效的,成功的操作</summary>
EVENT_SUCCESSAUDIT,
/// <summary>警告</summary>
EVENT_WARNING,
}
private static TextWriterTraceListener listner = null;
/// <summary>
/// 構造函數
/// </summary>
public LogUtility () {}
/// <param name="loginID">登入ID</param>
/// <param name="screenID">畫面ID</param>
/// <param name="level">警告級别</param>
/// <param name="message">日志資訊</param>
public static void Logging (
string loginID,
string screenID,
EVENT level,
string message )
// 變量定義
StringBuilder outputMessage = null; // 輸出的資訊
string targetLevelString = null;
EventLogEntryType Eventtype = new EventLogEntryType();
switch (level)
{
case EVENT.EVENT_ERROR:
Eventtype = EventLogEntryType.Error;
break;
case EVENT.EVENT_FAILUREAUDIT:
Eventtype = EventLogEntryType.FailureAudit;
case EVENT.EVENT_INFORMATION:
Eventtype = EventLogEntryType.Information;
case EVENT.EVENT_SUCCESSAUDIT:
Eventtype = EventLogEntryType.SuccessAudit;
case EVENT.EVENT_WARNING:
Eventtype = EventLogEntryType.Warning;
}
// 日志資訊的拼合
outputMessage = MakeMessage( loginID, screenID, targetLevelString, message );
// 寫日志
Logging( Eventtype, outputMessage.ToString() );
/// 向日志管理器寫日志
/// <param name="level">錯誤級别</param>
/// <param name="message">輸出的資訊</param>
private static void Logging ( EventLogEntryType level, string message )
string logName = null; // 日志名
string machineName = null; // 機器名
string sourceName = null; // SourceName
EventLog eventLog = null; // EventLog
logName = "Eventlog2"; // 日志名
machineName = "."; // 機器名
sourceName = "Eventlog2"; // SourceName
eventLog = new EventLog( logName, machineName, sourceName );
eventLog.WriteEntry( message,level );
eventLog = null;
/// 日志最終拼合
/// <param name="levelString">錯誤級别</param>
/// <returns>輸出的日志資訊</returns>
private static StringBuilder MakeMessage (
string levelString,
StringBuilder retMessage = new StringBuilder();
retMessage.Append( "【登入ID】" );
retMessage.Append( loginID );
retMessage.Append( "\n【畫面ID】" );
retMessage.Append( screenID );
retMessage.Append( "\n【錯誤級别】" );
retMessage.Append( levelString );
retMessage.Append( "\n【錯誤資訊】\n" );
retMessage.Append( message );
return retMessage;
}
}
// 在FORM中輸出日志
private void button1_Click(object sender, System.EventArgs e)
LogUtility.Logging( "bbbbbb","22222222",LogUtility.EVENT.EVENT_ERROR,"3333333" );
運作完程式後打開日志管理器看看~~~~~~~~~怎麼樣?不錯吧,呵呵.
另一個方法
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
namespace Log
class LogWirter
{
/// <summary>
/// 事件源名稱
/// </summary>
private string eventSourceName;
EventLogEntryType eventLogType;
public LogWirter()
{
eventSourceName = "test";
eventLogType = EventLogEntryType.Error;
}
/// 消息事件源名稱
public string EventSourceName
set { eventSourceName = value; }
/// 消息事件類型
public EventLogEntryType EventLogType
set { eventLogType = value; }
/// 寫入系統日志
/// <param name="message">事件内容</param>
public void LogEvent(string message)
if (!EventLog.SourceExists(eventSourceName))
{
EventLog.CreateEventSource(eventSourceName, "Application");
}
EventLog.WriteEntry(eventSourceName, message, EventLogEntryType.Error);
版權
作者:靈動生活 郝憲玮
如果你認為此文章有用,請點選底端的【推薦】讓其他人也了解此文章,

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。