c#.net . core 创建和发布windows 服务中的一些配置 app.config ,log4net peizhi

1 .net framwork 创建windows 窗体应用程序,自己写定时任务

//log4net从配置文件中读取配置
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

-----------------------------app.config----------

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<log4net>
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<!-- Set root logger level to ERROR and its appenders -->
<root>
<level value="ALL" />
<appender-ref ref="LogFile" />
</root>
<!-- Print only messages of level DEBUG or above in the packages -->
<logger name="logApp">
<level value="ALL" />
</logger>
<appender name="LogFile" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="Log/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
</log4net>
<appSettings>
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>

--------调用----------

 private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

log.Info("写日志内容");

2 .net core 2.2 建控制台应用程序,

然后添加新建项 c# windows 服务 引入相关nugit dll

 引入log4net dll

app.config 相关system 节点删掉,只留 configuration 节点,程序会自动加载app.config,如果不管用需要右键主程序编辑 如下:

 

 添加节点

<ItemGroup>
<Content Include="App.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>

这里log4net 再调试下 可以写日志到指定目录,如果发布后 ,添加到服务里,日志会写到system32 目录日志下,这里需要改下配置和代码:

  <param name="File" type="log4net.Util.PatternString" value="%property{LogsDirectory}\Log\" />

  log4net.GlobalContext.Properties["LogsDirectory"] = AppDomain.CurrentDomain.BaseDirectory;//指定服务日志目录

这样发布后的服务 写日志就写到指定文件夹目里下了。。。搞了两天才搞明白,原谅我是个小白,希望大家看到会有帮助。

猜你喜欢

转载自www.cnblogs.com/zhang-wenbin/p/12666672.html