您的位置:首页 > 其它

Log4的一些基本用法

2008-07-09 10:25 651 查看
1。首先在webconfig里面进行配置

<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<root>
<priority value="ALL"/>
<appender-ref ref="TraceAppender"/>
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="RollingLogFileAppender"/>
</root>
<appender name="TraceAppender" type="log4net.Appender.TraceAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log/log/" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value=".yyyyMMdd'.html'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
</log4net>

2.然后建立一个Loghelper的类

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using log4net;
/// <summary>
/// LogHelp 的摘要说明
/// </summary>
public class LogHelp
{
public LogHelp()
{
//
// TODO: 在此处添加构造函数逻辑
//
}

private const string LOG_REPOSITORY = "Default"; // this should likely be set in the web config.
private static ILog m_log;

public static void Init()
{
log4net.Config.XmlConfigurator.Configure();
}

private static void DoLog(string message, LogMessageType messageType, Exception ex, Type type)
{
m_log = LogManager.GetLogger(type);

switch (messageType)
{
case LogMessageType.Debug:
LogHelp.m_log.Debug(message, ex);
break;

case LogMessageType.Info:
LogHelp.m_log.Info(message, ex);
break;

case LogMessageType.Warn:
LogHelp.m_log.Warn(message, ex);
break;

case LogMessageType.Error:
LogHelp.m_log.Error(message, ex);
break;

case LogMessageType.Fatal:
LogHelp.m_log.Fatal(message, ex);
break;
}
}
/*日志级别*/
public enum LogMessageType
{
/// <summary>
/// 调试
/// </summary>
Debug,
/// <summary>
/// 信息
/// </summary>
Info,
/// <summary>
/// 警告
/// </summary>
Warn,
/// <summary>
/// 错误
/// </summary>
Error,
/// <summary>
/// 致命错误
/// </summary>
Fatal
}

public static void Write(string message, LogMessageType messageType)
{

DoLog(message, messageType, null, Type.GetType("System.Object"));
}

public static void Write(string message, LogMessageType messageType, Type type)
{
DoLog(message, messageType, null, type);
}

public static void Write(string message, LogMessageType messageType, Exception ex)
{
DoLog(message, messageType, ex, Type.GetType("System.Object"));
}

public static void Write(string message, LogMessageType messageType, Exception ex,
Type type)
{
DoLog(message, messageType, ex, type);
}

public static void Assert(bool condition, string message)
{
Assert(condition, message, Type.GetType("System.Object"));
}

public static void Assert(bool condition, string message, Type type)
{
if (condition == false)
Write(message, LogMessageType.Info);
}
}
3最后在global里面写入

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Diagnostics" %>
<script runat="server">

void Application_Start(object sender, EventArgs e)
{

LogHelp.Init();
LogHelp.Write("站点程序运行...<br>",LogHelp.LogMessageType.Info, this.GetType());
}

void Application_End(object sender, EventArgs e)
{

}

void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
Exception err = Server.GetLastError();

if (err is Exception)
{
//StringBuilder sb = new StringBuilder();

//if (Request.IsLocal)
// sb.AppendLine(err.Message.ToString());
//else
// sb.AppendLine(string.Format("系统程序发生异常。<br />错误信息:{0}", err));
//Server.ClearError();
//AppError.WriteError(AppError.ErrorType.Error, sb.ToString());

try
{
LogHelp.Write("Exception:", LogHelp.LogMessageType.Error, err, this.GetType());
}
catch
{
//日志写入失败。。。
}

}

}

void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
//Application.Lock();
//Application["count"] = Convert.ToInt32(Application["count"]) + 1;
//SqlParameter[] param ={ new SqlParameter("@counter", Application["count"].ToString()) };
//string procName = "dbo.UpdateCounter";
//DataBase.ExecuteQuery(procName,param);
//Application.UnLock();
}

void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。

}

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: