如何利用log4Net自定义属性配置功能记录完整的日志信息

如何利用log4Net自定义属性配置功能记录完整的日志信息,第1张

log4Net作为专业的log记录控件,对于它的强大功能大家一定不陌生。下面我将详细介绍如何利用其自定义属性,让日志信息更完整。

一,创建测试工程,log4Net组件可以自己从网上下载,也可通过Nuget进行安装。

万根网络大带宽云主机!

【点击进入】

10TB海量带宽储备! 100多个IDC节点任你选!

查 看

二,创建日志模型及数据库表,因为我们的日志信息可以输出为文本,也可以输出到数据库。

万根网络大带宽云主机!

【点击进入】

10TB海量带宽储备! 100多个IDC节点任你选!

查 看

育知同创教育—学安卓混合开发

【点击进入】

育知专注安卓混合开发培训,零基础,签协议, 保月薪10000,免费试听一个月,不满意不缴费

查 看

三,添加MyLayout,MyPatternConverter类扩展PatternLayout。

育知同创教育—学安卓混合开发

【点击进入】

育知专注安卓混合开发培训,零基础,签协议, 保月薪10000,免费试听一个月,不满意不缴费

查 看

四,添加Log4Net.config文件,进行输入方式定义。

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<configSections>

<section type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

</configSections>

<log4net>

<!-- ConversionPattern 解释

%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

%n(new line):换行

%d(datetime):输出当前语句运行的时刻

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

%t(thread id):当前语句所在的线程ID

%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

%c(class):当前日志对象的名称

%L:输出语句所在的行号

%F:输出语句所在的文件名

%-数字:表示该项的最小长度,如果不够,科技网,则用空格填充

-->

<!--定义输出到控制台命令行中-->

<logger>

<level value="ALL"/>

<appender-ref ref="ConsoleAppender" />

</logger>

<!--定义输出到控制台命令行中-->

<appender type="log4net.Appender.ConsoleAppender">

<layout type="Log4NetTest.MyLayout">

<param value="日志时间:%d %n日志级别:%-5p %n用 户 ID:%Property{UserID} %n用户姓名:%Property{UserName} %n日志信息:%Property{Message} %n异常信息:%exception %n%n" />

</layout>

</appender>

<!--定义输出到windows事件中-->

<appender type="log4net.Appender.EventLogAppender">

<layout type="Log4NetTest.MyLayout">

<param value="日志时间:%d %n日志级别:%-5p %n用 户 ID:%Property{UserID} %n用户姓名:%Property{UserName} %n日志信息:%Property{Message} %n异常信息:%exception %n%n" />

</layout>

</appender>

<!--定义输出到文件中-->

<appender type="log4net.Appender.RollingFileAppender">

<param value="Log\\" />

<param value="true" />

<param value="10240" />

<param value="100" />

<param value="false" />

<param value="yyyyMMdd" />

<param value="Date" />

<layout type="Log4NetTest.MyLayout">

<param value="日志时间:%d %n日志级别:%-5p %n用 户 ID:%Property{UserID} %n用户姓名:%Property{UserName} %n日志信息:%Property{Message} %n异常信息:%exception %n%n" />

</layout>

</appender>

<!--定义输出到数据库-->

<appender type="log4net.Appender.AdoNetAppender">

<!--日志缓存写入条数-->

<bufferSize value="1" />

<!--日志数据库连接串-->

<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

<connectionString value="data source=.\SQL2008initial catalog=Demointegrated security=falsepersist security info=TrueUser ID=saPassword=1qaz" />

<!--日志数据库脚本-->

<commandText value="INSERT INTO LogInfo ([LogDate],[LogLevel],[UserId],[UserName],[Message],[Exception]) VALUES (@LogDate, @LogLevel,@UserId,@UserName, @Message, @Exception)" />

<!--日志时间LogDate -->

<parameter>

<parameterName value="@LogDate" />

<dbType value="String" />

<size value="30" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss}" />

</layout>

</parameter>

<!--日志类型LogLevel -->

<parameter>

<parameterName value="@LogLevel" />

<dbType value="String" />

<size value="10" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%level" />

</layout>

</parameter>

<!--自定义UserId -->

<parameter>

<parameterName value="@UserId" />

<dbType value="String" />

<size value="20" />

<layout type="Log4NetTest.MyLayout">

<conversionPattern value="%Property{UserID}" />

</layout>

</parameter>

<!--自定义UserName -->

<parameter>

<parameterName value="@UserName" />

<dbType value="String" />

<size value="50" />

<layout type="Log4NetTest.MyLayout">

<conversionPattern value="%Property{UserName}" />

</layout>

</parameter>

<!--自定义Message -->

<parameter>

<parameterName value="@Message" />

<dbType value="String" />

<size value="200" />

<layout type="Log4NetTest.MyLayout">

<conversionPattern value="%Property{Message}" />

</layout>

</parameter>

<!--异常信息Exception -->

<parameter>

<parameterName value="@Exception" />

<dbType value="String" />

<size value="4000" />

<layout type="log4net.Layout.ExceptionLayout" />

</parameter>

</appender>

</log4net>

</configuration>

五,添加LogHelper.cs类进行各自信息的写入操作。

using System

using System.Diagnostics

using System.IO

using System.Windows.Forms

using log4net

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

namespace Log4NetTest

{

public class LogHelper

{

/// <summary>

/// LoggerName

/// </summary>

public static string LoggerName = string.Empty

/// <summary>

/// 用户ID

/// </summary>

public static string UserID = string.Empty

/// <summary>

/// 用户名称

/// </summary>

public static string UserName = string.Empty

private static ILog iLog

private static LogEntity logEntity

/// <summary>

/// 接口

/// </summary>

private static ILog log

{

get

{

string path = Application.StartupPath + @”\Log4Net.config”

log4net.Config.XmlConfigurator.Configure(new FileInfo(path))

if (iLog == null)

{

iLog = log4net.LogManager.GetLogger(LoggerName)

}

else

{

if (iLog.Logger.Name != LoggerName)

{

iLog = log4net.LogManager.GetLogger(LoggerName)

}

}

return iLog

}

}

高防云主机可以抗DDoS攻击,下面以美国高防云主机为例介绍其相关优势:

 1、无备案、无线路限制

国内创建网站的用户逃不掉一个极其繁琐的操作,那就是备案,针对不同的机房,其要求时限的也不尽相同,有的时候必须保证备案后才可以接入,没有备案号域名方根本没有机会和权利接入,不然就会面临网站关闭的风险。而美国高防云主机省去了备案操作,同时用户也省去了对于国内电信跟网通互联不互通的担心。关键的是,用户购买该产品后可以即买即用,该产品还同时支持多个网站上线,如此方便,受广大站长欢迎也是早晚的事情。

2、抵御网络攻击

一听名字,高防,其安全性不言而喻。很多企业在计划建站时都会倾向于选择一款能够同时阻止DDoS、CC等外来攻击的美国高防云主机。不仅如此,用户信赖该产品的主要原因还在于其提供了海量带宽,采用了一流的流量牵引技术,与恶意软件或者攻击防御所代表的安全性相结合,提供安全性能双保障。

3、访问速度快

访问速度快也算是性能方面最直观的一种体现。美国高防云主机由于机房设在美国,无疑对北美、欧洲客户最友好托管无疑是最佳选择,当然因为大部分产品所处机房位于洛杉矶、硅谷一带,与中国大陆仅隔一座太平洋,国内用户访问速度也不会差,甚至可以说与国外用户相差无几。一些著名品牌的相关产品会提供BGP国际带宽或者支持CN2线路,方便路由快捷传输。

4、价格低

不要被配置高价格就一定贵的惯性思维所打扰,实际上美国高防云主机价格比普通美国高防服务器价格便宜很多,很多小站长也是可以用的起的。而且该产品IP资源丰富,也十分有利于搜索引擎优化。就这一点上,用户只能想到该产品提供DDoS防御服务显然就有点落伍了。

WHT中文站针对相关产品提供商的产品信息和排名情况进行了介绍,值得参考。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/259441.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存