如何利用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中文站针对相关产品提供商的产品信息和排名情况进行了介绍,值得参考。

云主机是最近几年推出的新产品,海外云主机在国内看来更是新上加新。关于从从哪些面选择海外云主机更合理,相信不管是想建站的个人还是企业都想心里有个底!一、 从节约资本方面选择海外云主机。 为什么要选择海外云主机?海外云主机可以根据建站的实际需求与表现来选择CPU、内存、硬盘大小,不用担心将来配置根不上需求。海外云主机可以根据实际情况自主选择配置进行扩容,进而达到资源的最大利用率,同时也达到了节约资本的目的。 二、 从安全方面选择海外云主机。

海外云主机除了互联先锋服务商之外,国内还有其它服务商。在安全方面,很多服务商都表示:自己的海外云主机永远不出现数据丢失、拓机等现象。其实对于这种现象,小编认为世上的事情没有绝对的说法,什么事情都有可能有个万一,用“永远”只能说明说话的不严谨!事实上,很多服务商的实力参差不齐。至于安全的问题,海外云主机确实很少出现数据丢失、拓机等现象,但也因服务商实力而异。另外服务商不能黄婆卖瓜――自卖自夸!得用户说了算,真正用过的用户才具备发言权。有海外云主机的需求的个人或企业,可以自已根据实际情况来判断服务商所提供的海外云主机是否真正达到的安全标准,也可以向已经在使用海外云主机的个人或企业咨询,然后再决定购买。三、 从机房位置方面选择海外云主机。 机房实际所在的地理位置,直接影响使用者访问站点的互联网延迟时间。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存