Commit 888be158 authored by denny's avatar denny

同步代码

parent eb195acc
using System; using System;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using log4net; using log4net;
using log4net.Config; using log4net.Config;
using log4net.Repository; using log4net.Repository;
namespace MilitaryGuaranteeCard namespace MilitaryGuaranteeCard
{ {
/// <summary> /// <summary>
/// 日志 /// 日志
/// </summary> /// </summary>
public class Logger public class Logger
{ {
#region LazyLoading #region LazyLoading
private static readonly Lazy<Logger> Lazy = new Lazy<Logger>(() => new Logger()); private static readonly Lazy<Logger> Lazy = new Lazy<Logger>(() => new Logger());
public static Logger Instance => Lazy.Value; public static Logger Instance => Lazy.Value;
#endregion #endregion
#region Define #region Define
/// <summary> /// <summary>
/// 将消息记录到 log4net 框架中 /// 将消息记录到 log4net 框架中
/// </summary> /// </summary>
private ILog _logger; private ILog _logger;
/// <summary> /// <summary>
/// 存储库 /// 存储库
/// </summary> /// </summary>
private readonly ILoggerRepository _repository; private readonly ILoggerRepository _repository;
#endregion #endregion
/// <summary> /// <summary>
/// 构造器 /// 构造器
/// </summary> /// </summary>
public Logger() public Logger()
{ {
// 日志目录 // 日志目录
String logDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logs"); String logDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logs");
// 手动创建各个子文件夹 // 手动创建各个子文件夹
string[] subDirectories = { "NormalLogs", "ServiceLogs", "WarnLogs", "ErrorLogs" }; string[] subDirectories = { "NormalLogs", "ServiceLogs", "WarnLogs", "ErrorLogs" };
foreach (var subDir in subDirectories) foreach (var subDir in subDirectories)
{ {
string fullPath = Path.Combine(logDirectory, subDir); string fullPath = Path.Combine(logDirectory, subDir);
if (!Directory.Exists(fullPath)) if (!Directory.Exists(fullPath))
{ {
Directory.CreateDirectory(fullPath); Directory.CreateDirectory(fullPath);
} }
} }
// 获取当前应用程序的log4net日志存储库 // 获取当前应用程序的log4net日志存储库
_repository = LogManager.CreateRepository("PLA"); _repository = LogManager.CreateRepository("PLA");
// 使用指定的配置文件配置 // 使用指定的配置文件配置
XmlConfigurator.Configure(_repository, new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config"))); XmlConfigurator.Configure(_repository, new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config")));
} }
#region Methods #region Methods
/// <summary> /// <summary>
/// 普通日志 /// 普通日志
/// </summary> /// </summary>
/// <param name="message">消息</param> /// <param name="message">消息</param>
/// <param name="exception">执行过程中发生的错误</param> /// <param name="exception">执行过程中发生的错误</param>
public void NormalLogs(String message, Exception exception) public void NormalLogs(String message, Exception exception)
{ {
//检索或创建命名记录器 //检索或创建命名记录器
_logger = LogManager.GetLogger(_repository.Name, "NormalLogs"); _logger = LogManager.GetLogger(_repository.Name, "NormalLogs");
if (exception != null) if (exception != null)
{ {
_logger.Info(message, exception); _logger.Info(message, exception);
} }
else else
{ {
_logger.Info(message); _logger.Info(message);
} }
} }
/// <summary> /// <summary>
/// 服务日志 /// 服务日志
/// </summary> /// </summary>
/// <param name="message">消息</param> /// <param name="message">消息</param>
/// <param name="exception">执行过程中发生的错误</param> /// <param name="exception">执行过程中发生的错误</param>
public void ServiceLogs(String message, Exception exception) public void ServiceLogs(String message, Exception exception)
{ {
//检索或创建命名记录器 //检索或创建命名记录器
_logger = LogManager.GetLogger(_repository.Name, "ServiceLogs"); _logger = LogManager.GetLogger(_repository.Name, "ServiceLogs");
if (exception != null) if (exception != null)
{ {
_logger.Info(message, exception); _logger.Info(message, exception);
} }
else else
{ {
_logger.Info(message); _logger.Info(message);
} }
} }
/// <summary> /// <summary>
/// 警告日志 /// 警告日志
/// </summary> /// </summary>
/// <param name="message"></param> /// <param name="message"></param>
/// <param name="exception"></param> /// <param name="exception"></param>
public void WarnLogs(String message, Exception exception) public void WarnLogs(String message, Exception exception)
{ {
// 检索或创建命名记录器 // 检索或创建命名记录器
_logger = LogManager.GetLogger(_repository.Name, "WarnLogs"); _logger = LogManager.GetLogger(_repository.Name, "WarnLogs");
if (exception!=null) if (exception!=null)
{ {
_logger.Warn(message,exception); _logger.Warn(message,exception);
} }
else else
{ {
_logger.Warn(message); _logger.Warn(message);
} }
} }
/// <summary> /// <summary>
/// 错误日志 /// 错误日志
/// </summary> /// </summary>
/// <param name="message">消息</param> /// <param name="message">消息</param>
/// <param name="exception">执行过程中发生的错误</param> /// <param name="exception">执行过程中发生的错误</param>
public void ErrorLogs(String message, Exception exception) public void ErrorLogs(String message, Exception exception)
{ {
//检索或创建命名记录器 //检索或创建命名记录器
_logger = LogManager.GetLogger(_repository.Name, "ErrorLogs"); _logger = LogManager.GetLogger(_repository.Name, "ErrorLogs");
if (exception != null) if (exception != null)
{ {
_logger.Error(message, exception); _logger.Error(message, exception);
} }
else else
{ {
_logger.Error(message); _logger.Error(message);
} }
} }
#endregion #endregion
} }
} }
\ No newline at end of file
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
namespace MilitaryGuaranteeCard namespace MilitaryGuaranteeCard
{ {
internal static class Program internal static class Program
{ {
/// <summary> /// <summary>
/// 应用程序的主入口点。 /// 应用程序的主入口点。
/// </summary> /// </summary>
[STAThread] [STAThread]
static void Main() static void Main()
{ {
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1()); Application.Run(new Form1());
} }
} }
} }
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下 // 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改 // 控制。更改这些特性值可修改
// 与程序集关联的信息。 // 与程序集关联的信息。
[assembly: AssemblyTitle("MilitaryGuaranteeCard")] [assembly: AssemblyTitle("MilitaryGuaranteeCard")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("P R C")] [assembly: AssemblyCompany("P R C")]
[assembly: AssemblyProduct("MilitaryGuaranteeCard")] [assembly: AssemblyProduct("MilitaryGuaranteeCard")]
[assembly: AssemblyCopyright("Copyright © P R C 2024")] [assembly: AssemblyCopyright("Copyright © P R C 2024")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型 // 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。 //请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)] [assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("ec8375e3-f9f7-4486-b856-d4515b2286a6")] [assembly: Guid("ec8375e3-f9f7-4486-b856-d4515b2286a6")]
// 程序集的版本信息由下列四个值组成: // 程序集的版本信息由下列四个值组成:
// //
// 主版本 // 主版本
// 次版本 // 次版本
// 生成号 // 生成号
// 修订号 // 修订号
// //
[assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// 此代码由工具生成。 // 此代码由工具生成。
// 运行时版本:4.0.30319.42000 // 运行时版本:4.0.30319.42000
// //
// 对此文件的更改可能会导致不正确的行为,并且如果 // 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。 // 重新生成代码,这些更改将会丢失。
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace MilitaryGuaranteeCard.Properties { namespace MilitaryGuaranteeCard.Properties {
using System; using System;
/// <summary> /// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。 /// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary> /// </summary>
// 此类是由 StronglyTypedResourceBuilder // 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。 // (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources { internal class Resources {
private static global::System.Resources.ResourceManager resourceMan; private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture; private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() { internal Resources() {
} }
/// <summary> /// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。 /// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager { internal static global::System.Resources.ResourceManager ResourceManager {
get { get {
if (object.ReferenceEquals(resourceMan, null)) { if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MilitaryGuaranteeCard.Properties.Resources", typeof(Resources).Assembly); global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MilitaryGuaranteeCard.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp; resourceMan = temp;
} }
return resourceMan; return resourceMan;
} }
} }
/// <summary> /// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对 /// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。 /// 使用此强类型资源类的所有资源查找执行重写。
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture { internal static global::System.Globalization.CultureInfo Culture {
get { get {
return resourceCulture; return resourceCulture;
} }
set { set {
resourceCulture = value; resourceCulture = value;
} }
} }
} }
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// 此代码由工具生成。 // 此代码由工具生成。
// 运行时版本:4.0.30319.42000 // 运行时版本:4.0.30319.42000
// //
// 对此文件的更改可能会导致不正确的行为,并且如果 // 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。 // 重新生成代码,这些更改将会丢失。
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
namespace MilitaryGuaranteeCard.Properties { namespace MilitaryGuaranteeCard.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default { public static Settings Default {
get { get {
return defaultInstance; return defaultInstance;
} }
} }
} }
} }
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles> <Profiles>
<Profile Name="(Default)" /> <Profile Name="(Default)" />
</Profiles> </Profiles>
<Settings /> <Settings />
</SettingsFile> </SettingsFile>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<configuration> <configuration>
<configSections> <configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections> </configSections>
<!-- This section contains the log4net configuration settings --> <!-- This section contains the log4net configuration settings -->
<log4net> <log4net>
<appender name="NormalAppender" type="log4net.Appender.RollingFileAppender"> <appender name="NormalAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径,会自动创建--> <!--日志文件路径,会自动创建-->
<file value="Logs/NormalLogs/" /> <file value="Logs/NormalLogs/" />
<!--编码格式:UTF-8 --> <!--编码格式:UTF-8 -->
<param name="Encoding" value="utf-8" /> <param name="Encoding" value="utf-8" />
<!--是否是向文件中追加日志--> <!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" /> <param name="AppendToFile" value="true" />
<!--log备份文件最大数量,超过设置数量会滚动覆盖之前的日志--> <!--log备份文件最大数量,超过设置数量会滚动覆盖之前的日志-->
<param name="MaxSizeRollBackups" value="5" /> <param name="MaxSizeRollBackups" value="5" />
<!--最大文件大小(KB/MB/GB)--> <!--最大文件大小(KB/MB/GB)-->
<param name="MaximumFileSize" value="1GB" /> <param name="MaximumFileSize" value="1GB" />
<!--日志文件名是否是固定不变的--> <!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" /> <param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:2018-08-31.log--> <!--日志文件名格式为:2018-08-31.log-->
<datePattern value="yyyy-MM-dd'.log'" /> <datePattern value="yyyy-MM-dd'.log'" />
<!--日志滚动方式:混合方式(文件大小和日期)--> <!--日志滚动方式:混合方式(文件大小和日期)-->
<param name="RollingStyle" value="Composite" /> <param name="RollingStyle" value="Composite" />
<layout type="log4net.Layout.PatternLayout"> <layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %message%newline" /> <conversionPattern value="%date [%thread] %-5level %message%newline" />
</layout> </layout>
</appender> </appender>
<appender name="ServiceAppender" type="log4net.Appender.RollingFileAppender"> <appender name="ServiceAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径,会自动创建--> <!--日志文件路径,会自动创建-->
<file value="Logs/ServiceLogs/" /> <file value="Logs/ServiceLogs/" />
<param name="Encoding" value="utf-8" /> <param name="Encoding" value="utf-8" />
<!--是否是向文件中追加日志--> <!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" /> <param name="AppendToFile" value="true" />
<!--log备份文件最大数量,超过设置数量会滚动覆盖之前的日志--> <!--log备份文件最大数量,超过设置数量会滚动覆盖之前的日志-->
<param name="MaxSizeRollBackups" value="5" /> <param name="MaxSizeRollBackups" value="5" />
<!--最大文件大小(KB/MB/GB)--> <!--最大文件大小(KB/MB/GB)-->
<param name="MaximumFileSize" value="1GB" /> <param name="MaximumFileSize" value="1GB" />
<!--日志文件名是否是固定不变的--> <!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" /> <param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:2018-08-31.log--> <!--日志文件名格式为:2018-08-31.log-->
<datePattern value="yyyy-MM-dd'.log'" /> <datePattern value="yyyy-MM-dd'.log'" />
<!--日志滚动方式:混合方式(文件大小和日期)--> <!--日志滚动方式:混合方式(文件大小和日期)-->
<param name="RollingStyle" value="Composite" /> <param name="RollingStyle" value="Composite" />
<layout type="log4net.Layout.PatternLayout"> <layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %message%newline" /> <conversionPattern value="%date [%thread] %-5level %message%newline" />
</layout> </layout>
</appender> </appender>
<appender name="WarnAppender" type="log4net.Appender.RollingFileAppender"> <appender name="WarnAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径,会自动创建--> <!--日志文件路径,会自动创建-->
<file value="Logs/WarnLogs/" /> <file value="Logs/WarnLogs/" />
<!--编码:UTF-8--> <!--编码:UTF-8-->
<param name="Encoding" value="utf-8" /> <param name="Encoding" value="utf-8" />
<!--是否是向文件中追加日志--> <!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" /> <param name="AppendToFile" value="true" />
<!--log备份文件最大数量,超过设置数量会滚动覆盖之前的日志--> <!--log备份文件最大数量,超过设置数量会滚动覆盖之前的日志-->
<param name="MaxSizeRollBackups" value="5" /> <param name="MaxSizeRollBackups" value="5" />
<!--最大文件大小(KB/MB/GB)--> <!--最大文件大小(KB/MB/GB)-->
<param name="MaximumFileSize" value="1GB" /> <param name="MaximumFileSize" value="1GB" />
<!--日志文件名是否是固定不变的--> <!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" /> <param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:2018-08-31.log--> <!--日志文件名格式为:2018-08-31.log-->
<datePattern value="yyyy-MM-dd'.log'" /> <datePattern value="yyyy-MM-dd'.log'" />
<!--日志滚动方式:混合方式(文件大小和日期)--> <!--日志滚动方式:混合方式(文件大小和日期)-->
<param name="RollingStyle" value="Composite" /> <param name="RollingStyle" value="Composite" />
<layout type="log4net.Layout.PatternLayout"> <layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %message%newline" /> <conversionPattern value="%date [%thread] %-5level %message%newline" />
</layout> </layout>
</appender> </appender>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件路径,会自动创建--> <!--日志文件路径,会自动创建-->
<file value="Logs/ErrorLogs/" /> <file value="Logs/ErrorLogs/" />
<!--编码:UTF-8--> <!--编码:UTF-8-->
<param name="Encoding" value="utf-8" /> <param name="Encoding" value="utf-8" />
<!--是否是向文件中追加日志--> <!--是否是向文件中追加日志-->
<param name="AppendToFile" value="true" /> <param name="AppendToFile" value="true" />
<!--log备份文件最大数量,超过设置数量会滚动覆盖之前的日志--> <!--log备份文件最大数量,超过设置数量会滚动覆盖之前的日志-->
<param name="MaxSizeRollBackups" value="5" /> <param name="MaxSizeRollBackups" value="5" />
<!--最大文件大小(KB/MB/GB)--> <!--最大文件大小(KB/MB/GB)-->
<param name="MaximumFileSize" value="1GB" /> <param name="MaximumFileSize" value="1GB" />
<!--日志文件名是否是固定不变的--> <!--日志文件名是否是固定不变的-->
<param name="StaticLogFileName" value="false" /> <param name="StaticLogFileName" value="false" />
<!--日志文件名格式为:2018-08-31.log--> <!--日志文件名格式为:2018-08-31.log-->
<datePattern value="yyyy-MM-dd'.log'" /> <datePattern value="yyyy-MM-dd'.log'" />
<!--日志滚动方式:混合方式(文件大小和日期)--> <!--日志滚动方式:混合方式(文件大小和日期)-->
<param name="RollingStyle" value="Composite" /> <param name="RollingStyle" value="Composite" />
<layout type="log4net.Layout.PatternLayout"> <layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %message%newline" /> <conversionPattern value="%date [%thread] %-5level %message%newline" />
</layout> </layout>
</appender> </appender>
<!-- Setup the root category, add the appenders and set the default level --> <!-- Setup the root category, add the appenders and set the default level -->
<logger name="NormalLogs"> <logger name="NormalLogs">
<level value="ALL" /> <level value="ALL" />
<appender-ref ref="NormalAppender" /> <appender-ref ref="NormalAppender" />
</logger> </logger>
<logger name="ServiceLogs"> <logger name="ServiceLogs">
<level value="ALL" /> <level value="ALL" />
<appender-ref ref="ServiceAppender" /> <appender-ref ref="ServiceAppender" />
</logger> </logger>
<logger name="WarnLogs"> <logger name="WarnLogs">
<level value="ALL" /> <level value="ALL" />
<appender-ref ref="WarnAppender" /> <appender-ref ref="WarnAppender" />
</logger> </logger>
<logger name="ErrorLogs"> <logger name="ErrorLogs">
<level value="ALL" /> <level value="ALL" />
<appender-ref ref="ErrorAppender" /> <appender-ref ref="ErrorAppender" />
</logger> </logger>
</log4net> </log4net>
</configuration> </configuration>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="ClosedXML" version="0.64.0" targetFramework="net40" /> <package id="ClosedXML" version="0.64.0" targetFramework="net40" />
<package id="DocumentFormat.OpenXml" version="1.0" targetFramework="net40" /> <package id="DocumentFormat.OpenXml" version="1.0" targetFramework="net40" />
<package id="log4net" version="2.0.17" targetFramework="net40" /> <package id="log4net" version="2.0.17" targetFramework="net40" />
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net40" /> <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net40" />
</packages> </packages>
\ No newline at end of file
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17 # Visual Studio Version 17
VisualStudioVersion = 17.12.35506.116 VisualStudioVersion = 17.12.35506.116
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MilitaryGuaranteeCard", "MilitaryGuaranteeCard\MilitaryGuaranteeCard.csproj", "{EC8375E3-F9F7-4486-B856-D4515B2286A6}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MilitaryGuaranteeCard", "MilitaryGuaranteeCard\MilitaryGuaranteeCard.csproj", "{EC8375E3-F9F7-4486-B856-D4515B2286A6}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EC8375E3-F9F7-4486-B856-D4515B2286A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EC8375E3-F9F7-4486-B856-D4515B2286A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EC8375E3-F9F7-4486-B856-D4515B2286A6}.Debug|Any CPU.Build.0 = Debug|Any CPU {EC8375E3-F9F7-4486-B856-D4515B2286A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC8375E3-F9F7-4486-B856-D4515B2286A6}.Release|Any CPU.ActiveCfg = Release|Any CPU {EC8375E3-F9F7-4486-B856-D4515B2286A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC8375E3-F9F7-4486-B856-D4515B2286A6}.Release|Any CPU.Build.0 = Release|Any CPU {EC8375E3-F9F7-4486-B856-D4515B2286A6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
EndGlobal EndGlobal
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment