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);
版权
作者:灵动生活 郝宪玮
如果你认为此文章有用,请点击底端的【推荐】让其他人也了解此文章,

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。