分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

记录日志好习惯——Log4net入门(WCF篇)

发布时间:2023-09-06 01:20责任编辑:蔡小小关键词:暂无标签

本篇是在学习了“编码之道”的Log4net入门(WCF篇)http://www.cnblogs.com/yonghuacui/p/6181864.html之后,总结了一些自认为比较重要的细节。顺便把创建和发布WCF服务的知识也一起巩固一下。

一、创建项目

1、在模板中选择【WCF服务应用程序】,输入项目名称“Log4netWCF”后,点击创建。

2、右键点击“Log4netWCF”项目中的“IService1.cs”文件,将其删除,再展开“Service1.svc”,将子项“Service1.svc.cs”删除。

3、在解决方案中【添加项目】,在模板中选择【WCF服务库】项目,输入项目名称“Log4netWcfServiceLibrary”后,点击创建。

4、在“Log4netWCF”项目中右键点击【引用】-【添加引用】-【项目】,勾选“Log4netWcfServiceLibrary”项目.

5、打开“Log4netWCF”项目的“Service1.svc”文件,修改其中的代码为:

1 <%@ ServiceHost Language="C#" Debug="true" Service="Log4netWcfServiceLibrary.Service1" CodeBehind="Service1.cs" %>

6、选择【生成解决方案】,没有报错的话,那我们的WCF服务就算是创建好了。

二、发布服务

1、右键点击“Log4netWCF”项目,选择【发布】。弹出如下对话框。

2、在【配置文件】选择【自定义】,输入配置文件名称“Log4netWCF”,这个随便取,好记就行,点击【下一步】。

3、在【连接】中“Publish method”选择“File System”,“Target location”点击后面的“...”,选择【文件系统】,选择一个合适的目录。我选择“F:\Log4netWCF”这个文件夹,点击【发布】。

 三、在IIS创建网站

1、安装IIS的方法我就不细说了,网上一搜一大把,在【计算机管理】中选择【Internet Information Services(IIS)】-【网站】-【添加网站】。

2、“网站名称”填“Log4netWcfService”,“物理路径”选择刚刚发布WCF时选择的路径“F:\Log4netWCF”,“绑定”里“IP地址”填写“127.0.0.1”,“端口”填写“8081”(填一个没有使用的就行),点击确定。

3、点击右侧“浏览网站”,查看网页有没有报错,没报错的话WCF服务就算是发布成功了。

 四、测试WCF服务

1、在解决方案里再添加一个测试用的项目,右键解决方案【添加】-【新建项目】,选择“控制台应用程序”,项目名称“Log4netWCFTest”。

2、在“Log4netWCFTest”项目中,右键点击【引用】-【添加服务引用】。

3、在地址栏输入刚刚发布的WCF服务的地址,后加svc文件的文件名,点击【转到】。服务栏出现了服务,说明已经检测到了WCF服务。然后在“命名空间”中输入名称“Log4netWcfService”,点击确定。

4、把“Log4netWCFTest”设置为启动项目。右键“Log4netWCFTest”项目,选择【设置为启动项目】。

5、在“Log4netWCFTest”项目的Program.cs文件中增加测试代码。

using System;namespace Log4netWCFTest{ ???class Program ???{ ???????static void Main(string[] args) ???????{ ???????????Log4netWcfService.Service1Client client = new Log4netWcfService.Service1Client(); ???????????Console.WriteLine(client.GetData(5)); ???????????Console.ReadKey(); ???????} ???}}

6、点击启动,查看结果。

7、输出结果为“You entered 5”,证明我们的服务是可以使用的。

五、使用Log4net记录日志

1、终于讲到正题了,在项目“Log4netWcfServiceLibrary”中,右键点击【引用】-【添加引用】。

2、选择【浏览】项,找到Log4net.dll,点击【确定】。

3、在“Log4netWCFServiceLibrary”项目中添加Log4net的配置文件。

4、因为找不到配置文件的类型,我这里文件类型就直接选择“类”,文件名称填写“Log4net.config”。

5、将添加的配置文件中的内容删除,添加如下代码:

<?xml version="1.0" encoding="utf-8"?><configuration> ?<configSections> ???<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> ?</configSections> ?<system.web> ???<compilation debug="true" targetFramework="4.5.2" /> ???<httpRuntime targetFramework="4.5.2" /> ?</system.web> ?<log4net> ???<!-- 将日志以回滚文件的形式写到文件中 --> ???<!-- 按日期切分日志文件,并将日期作为日志文件的名字 --> ???<appender name="RollingFileAppenderNameByDate" type="log4net.Appender.RollingFileAppender"> ?????<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> ?????<file value="C:\Logs\" /> ?????<!-- 将日志信息追加到已有的日志文件中--> ?????<appendToFile value="true" /> ?????<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> ?????<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> ?????<!-- 指定按日期切分日志文件 --> ?????<rollingStyle value="Date" /> ?????<!-- 日志文件的命名规则 --> ?????<datePattern value="&quot;WCFLogs_&quot;yyyyMMdd&quot;.log&quot;" /> ?????<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> ?????<staticLogFileName value="false" /> ?????<layout type="log4net.Layout.PatternLayout"> ???????<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> ?????</layout> ???</appender> ???<root> ?????<!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF --> ?????<!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 --> ?????<!-- 如果没有定义LEVEL的值,则缺省为DEBUG --> ?????<level value="ALL" /> ?????<!-- 按日期切分日志文件,并将日期作为日志文件的名字 --> ?????<appender-ref ref="RollingFileAppenderNameByDate" /> ???</root> ?</log4net></configuration>

6、修改“Log4netWCFServiceLibrary”项目中的Service1.cs文件,代码如下:

using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;namespace Log4netWcfServiceLibrary{ ???// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“Service1”。 ???public class Service1 : IService1 ???{ ???????private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); ???????public string GetData(int value) ???????{ ???????????log.Debug("这是deBug日志"); ???????????log.Info("这是Info日志"); ???????????log.Warn("这是Warn日志"); ???????????log.Error("这是Error日志"); ???????????log.Fatal("这是Fatal日志"); ???????????return string.Format("You entered: {0}", value); ???????} ???????public CompositeType GetDataUsingDataContract(CompositeType composite) ???????{ ???????????if (composite == null) ???????????{ ???????????????throw new ArgumentNullException("composite"); ???????????} ???????????if (composite.BoolValue) ???????????{ ???????????????composite.StringValue += "Suffix"; ???????????} ???????????return composite; ???????} ???}}

7、在“Log4netWCFServiceLibrary”项目的AssemblyInfo.cs文件最后中添加一行:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]

8、重新发布一次“Log4netWCF”项目。使用“Log4netWCFTest”项目测试下服务,接着就可以去日志路径查看日志了。日志路径配置在“Log4netWCF”项目的“Log4net.config”文件中,我这里配置的路径为“C:\Logs\”。

注:日志文件路径也可以使用相对路径,如:

<file value="logs\" />

日志会输出到发布WCF服务的路径下。

记录日志好习惯——Log4net入门(WCF篇)

原文地址:http://www.cnblogs.com/long570020553-longgong/p/7735396.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved