在上一篇Log4net入门(ASP.NET MVC 5篇)中,我们讲述了如何在ASP.NET MVC 5项目中使用log4net。在这一篇中,我们将讲述如何在WCF应用中使用log4net,为了讲述这个过程,我们将创建三个项目:WCF服务库项目、WCF服务应用程序和客户端应用程序。WCF服务库项目主要用于编写我们的WCF契约及服务,WCF服务应用程序主要用于将我们的WCF服务库托管到IIS上,客户端应用程序主要目的就是调用我们托管到IIS上的WCF服务。

一、项目创建

1、空白解决方案的创建:启动VS2015,依次点击【文件】-【新建】-【项目】,在“新建项目”对话框中,展开“其他项目类型”节点,选中“Visual Studio”解决方案,我们创建一个名为“Log4netWCF”的空白解决方案。

2、WCF服务库项目的创建:右击在第一步创建的“Log4netWCF”解决方案,依次点击【添加】-【新建】项目,在“添加新项目”对话框中,我们选中“WCF”节点,在右侧我们选择“WCF服务库”项目,将该项目命名为“Log4netWCFServiceLibrary”,然后点击“确定”按钮,这样一个最简单的WCF服务就创建好了,里面的IService1.cs是服务契约,Service1是该契约的实现,这个是微软自带的演示代码,为了简单起见,我们不做任何改动,直接使用这个最简单的服务。

3、WCF服务应用程序的创建:右击在第一步创建的“Log4netWCF”解决方案,依次点击【添加】-【新建】项目,在“新建项目”对话框中,我们选中“WCF”节点,在右侧我们选择“WCF服务应用程序”项目,将该项目命名为“Log4netWCFService”,然后点击“确定”按钮,完成WCF服务应用程序的创建。

4、在新创建的“Log4netWCFService”项目中,我们右击“IService1.cs”文件,选择将其删除。然后展开Service1.svc,右击“Service1.svc.cs”,选择将其删除。

5、右击“Log4netWCFService”项目的“引用”节点,选择【添加引用】选项,在弹出的“引用管理器”对话框中,展开“项目”节点,选中“解决方案”节点,在右侧勾选“Log4netWCFServiceLibrary”,然后点击“确定”按钮。这样我们就在“Log4netWCFService”服务应用程序项目中添加了对“Log4netWCFServiceLibrary”服务库的引用。

6、双击打开“Log4netWCFService”项目中的Service1.svc文件,将其中的代码修改为以下代码:

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

7、右击“Log4netWCF”解决方案,点击【生成解决方案】选项,编译整个解决方案,如果没有错误,继续下面的操作。

8、右击“Log4netWCFService”项目,点击【发布】选项,弹出“发布Web”对话框,如下所示:

9、选择“自定义”选项,然后输入配置文件名称为“Log4netWCF”,这个名称可以随便取,好记即可。然后点击“确定”按钮,进入下一步,如下图所示:

10、在“Publish method:”中选择“File System”,入下图所示:

11、点击“Target location:”后面的“...”按钮,弹出“目标位置”对话框,在该对话框中点击“本地IIS”按钮,如下图所示:

12、在上图中,点击“IIS网站”下面的“Default Web Site”,然后点击右上角的“创建新Web应用程序”按钮,如下图所示:

13、输入应用程序名称为“Log4netWCF”,如下图所示:

14、点击“打开”按钮,返回到“发布Web”对话框,然后点击“下一步”按钮。在“设置”标签页中,展开“File Publish Options”,然后勾选“Delete all existing files prior to publish”和“Precompile during publishing”,如下图所示:

15、点击“下一步”按钮,然后再点击“发布”按钮,等待发布成功提示信息即可。

16、打开控制面板,依次点击【系统和安全】-【管理工具】,然后以管理员身份运行“Internet信息服务(IIS)管理器”,在打开的“Internet信息服务(IIS)管理器”窗口中展开“Default Web Site”节点,然后选择“Log4netWCF”应用程序,在右侧下方点击“内容视图”,然后右键单击“Service1.svc”文件,选择【浏览】选项,如果WCF服务没有错误,则会出现如下页面:

  注意:上图中的服务地址:http://localhost/Log4netWCF/Service1.svc,我们会在客户端程序中添加服务引用的时候用到。

17、客户端应用程序的创建:为方便起见,我们将客户端应用程序创建为一个控制台应用程序,右击第一步创建的“Log4netWCF”解决方案,依次点击【添加】-【新建项目】选项,在弹出的“添加新项目”对话框中选择“控制台应用程序”,并将其命名为Client,然后点击“确定”按钮。

18、在新创建的“Client”项目中,右击“引用”节点,然后点击【添加服务引用】选项,在弹出的“添加服务引用”对话框中的地址栏中,输入在第16步生成的服务地址:http://localhost/Log4netWCF/Service1.svc,然后点击“转到”按钮,修改命名空间为“Log4netWCF”,如下图所示:

19、点击“确定”按钮,完成对WCF服务的引用。

20、双击打开“Client”项目中的“Program.cs”文件,修改代码如下所示:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Client
{
class Program
{
static void Main(string[] args)
{
Log4netWCF.Service1Client proxy = new Log4netWCF.Service1Client();
proxy.Open();
string returnString = proxy.GetData();
proxy.Close();

Console.WriteLine(returnString);
Console.ReadKey();
}
}
}

21、将“Client”项目设置为启动项目,然后运行程序,如果没有任何错误,会出现如下结果页面:

  到这为止,我们的WCF应用程序全部创建完毕,下一步我们将在WCF应用程序中添加对log4net的使用。

二、在WCF应用程序中配置log4net

1、点击VS工具栏中的【工具】-【NuGet包管理器】-【管理解决方案的NuGet程序包】,在打开的“NuGet - 解决方案”标签页中,点击“浏览”标签,然后在搜索框中输入“log4net”,选择搜索结果中的“log4net”,然后勾选右侧的“Log4netWCFServiceLibrary”,选择最新稳定版本,然后点击“安装按钮”,如下图所示:

2、安装log4net之后,点击“Log4netWCFServiceLibrary”项目中的Properties节点,然后双击打开“AssemblyInfo.cs”文件,在该文件最后添加以下一行代码:

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

3、双击打开“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;
}
}
}

4、在“Log4netWCFService”项目中添加一个名为“Log4net.config”的配置文件,我们在其中配置按日期切分日志文件,并且将日期作为日志文件名称的一部分,具体配置文件如下所示:

 <?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>

5、重新发布“Log4netWCFService”项目到IIS上,重新发布时只需点击【发布】菜单,然后点击“发布”按钮即可。

6、运行“Client”控制台应用程序,运行完毕后,我们就可以在C:\Logs\目录下看到名为“WCFLogs_20161215.log”的日志文件,有可能日期不一样。

  至此,如何在WCF应用中使用log4net就讲到这儿,祝大家顺利实现!

  源码下载

Log4net入门(WCF篇)的更多相关文章

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

    本篇是在学习了“编码之道”的Log4net入门(WCF篇)http://www.cnblogs.com/yonghuacui/p/6181864.html之后,总结了一些自认为比较重要的细节.顺便把创 ...

  2. Log4net入门(帮助类篇)

    在前几篇Log4net入门文件的讲述过程中,我们在使用log4net的类中都要编写如下一行代码: private static log4net.ILog log = log4net.LogManage ...

  3. Log4net入门(ASP.NET MVC 5篇)

    在前4篇Log4net入门文章中,我们讲述了log4net的一些简单用法,在这一篇中我们主要讲述如何在ASP.NET MVC 5项目中将日志信息写入SQL Server数据库中. 一.创建最简单的AS ...

  4. Log4net入门(SQL篇)

    我们在Log4net入门(回滚日志篇)中详细讲述了如何将日志信息输出到日志文件中,在这一篇中,我们将讲述如何将日志文件写入SQL Server数据库,以方便我们分析统计日志信息. 首先,我们在SQL ...

  5. Log4net入门(日志文件篇)

    在上一篇Log4net入门(控制台篇)中,我们将日志信息输出到控制台中,在这一篇中,我们将描述如何将日志信息写到文件中.要将日志信息写入文件非常简单,只需要在Log4net.config配置文件中添加 ...

  6. 关于WEB Service&WCF&WebApi实现身份验证之WCF篇(2)

    因前段时间工作变动(换了新工作)及工作较忙暂时中断了该系列文章,今天难得有点空闲时间,就继续总结WCF身份验证的其它方法.前面总结了三种方法(详见:关于WEB Service&WCF& ...

  7. Asp.Net MVC2.0 Url 路由入门---实例篇

    本篇主要讲述Routing组件的作用,以及举几个实例来学习Asp.Net MVC2.0 Url路由技术. 接着上一篇开始讲,我们在Global.asax中注册一条路由后,我们的请求是怎么转到相应的Vi ...

  8. JavaMail入门第一篇 邮件简介及API概述

    现如今,电子邮件在我们的生活当中扮演着越来越重要的角色,我们每个人几乎都会与其打交道(至少时不时我们都会接收到莫名其妙的垃圾邮件),在工作中,使用邮件进行交流沟通,可以使我们的工作有迹可循,也显的较为 ...

  9. C# 实现身份验证之WCF篇(2)

    前面总结了三种方法,今天又将分享三种方法,完成WCF篇. 第四种:SOAP Header验证 首先定义一个WCF服务契约及服务实现类(后面的各种验证均采用该WCF服务),我这里直接采用默认的代码,如下 ...

随机推荐

  1. C语言 · 最大值与最小值计算

    输入11个整数,计算它们的最大值和最小值. 样例输入 0 1 2 3 4 5 6 7 8 9 10 样例输出 10 0   #include<stdio.h> int main(){ ]; ...

  2. ABP文档 - Javascript Api

    文档目录 本节内容: AJAX Notification Message UI Block & Busy Event Bus Logging Other Utility Functions A ...

  3. python之路 - 基础1

    1.安装windows安装双版本Python2,Python3 下载Python2和Python3https://www.python.org/downloads/ 分别安装两个版本 进入Python ...

  4. Centos 下 mysql root 密码重置

    重置mysql密码的方法有很多,官网也提供了很方便的快捷操作办法,可参考资料 resetting permissions .本文重置密码的具体步骤如下: 一.停止MySQL(如果处于运行状态) #se ...

  5. [APUE]文件和目录(上)

    一.文件权限 1. 各种ID 我在读这一章时遇到了各种ID,根据名字完全不清楚什么意思,幸好看到了这篇文章,http://blog.csdn.net/ccjjnn19890720/article/de ...

  6. 旺财速啃H5框架之Bootstrap(一)

    接下来的时间里,我将和大家一起对当前非常流行的前端框架Bootstrap进行速度的学习,以案例的形式.对刚开始想学习Bootstrap的同学而找不着边的就很有帮助了.如果你想详细的学习Bootstra ...

  7. .NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?

    配置的同步涉及到两个方面:第一,对原始的配置文件实施监控并在其发生变化之后从新加载配置:第二,配置重新加载之后及时通知应用程序进而使后者能够使用最新的配置.要了解配置同步机制的实现原理,先得从认识一个 ...

  8. MAVEN学习-第一个Maven项目的构建

    MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...

  9. 神技!微信小程序(应用号)抢先入门教程(附最新案例DEMO-豆瓣电影)持续更新

    微信小程序 Demo(豆瓣电影) 由于时间的关系,没有办法写一个完整的说明,后续配合一些视频资料,请持续关注 官方文档:https://mp.weixin.qq.com/debug/wxadoc/de ...

  10. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler

    熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...