C#类库使用log4net时,程序调用log4net配置文件路径问题

C#类库使用log4net时,程序调用log4net配置文件路径问题,第1张

在类库的 assemblyInfo.cs中改为:

[assembly: log4net.Config.XmlConfigurator(Watch=true)]

意思是:让log4net从应用程序的.config文件获取配置

假设有一个TestApp应用程序引用了上面类库,那么,按上面的修改,log4net将从TestApp.config文件获取配置。这样,你可以将原来类库app.config的内容移动到TestApp项目的app.confg中(TestApp项目编译后自动生成TestApp.config)。

希望对你有所帮助!

/ 程序集的版本信息由下列 4 个值组成:

//

// 主版本

// 次版本

// 内部版本号

// 修订号

//

// 您可以指定所有这些值,也可以使用“修订号”和“内部版本号”的默认值,方法是按

// 如下所示使用 '*':

[assembly:AssemblyVersion("1.0.*")]

但是,你会发现一个问题,这些AssemblyInfo.cs当中有一部分在重复的,若能把它们提取出来放入一个单一文件中,修改AssemblyInfo中的诸如产品名、产品版本、版本等信息会变得轻松。那么,这个程序集信息文件,我们叫做它——GlobalAssemblyInfo.cs 制作步骤:在解决方案中添加名为GlobalAssemblyInfo.cs的C#类文件清除GlobalAssemblyInfo.cs中的代码,然后将如下代码粘贴进去

/* ============================== * 全局程序集信息 * GlobalAssemblyInfo.cs * * 请把此文件引用到其他的项目中 ==============================*/ using System.Reflectionusing System.Runtime.InteropServices[assembly: ComVisible(false)] [assembly: AssemblyProduct("全局程序集和能输出调试信息到控制台的WinForm项目的演示")] [assembly: AssemblyCompany("Oyi319的公司")] [assembly: AssemblyVersion(RevisionClass.FullVersion)] #if DEBUG [assembly : AssemblyConfiguration("Debug")] #else [assembly: AssemblyConfiguration("Release")] #endif [assembly: AssemblyCopyright("版权所有 2010 Oyi319")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] internal static class RevisionClass { public const string Major = "1"public const string Minor = "0"public const string Build = "0"public const string Revision = "0"public const string MainVersion = Major + "." + Minorpublic const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision} /* 其他程序集的AssemblyInfo.cs简化如下内容所有信息数据单独填写 using Systemusing System.Reflectionusing System.Runtime.CompilerServicesusing System.Runtime.InteropServices[assembly: AssemblyTitle("程序集标题")] [assembly: AssemblyDescription("程序集描述")] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("6a6263f2-35d2-4077-a1aa-cc775ca7cf84")] [assembly: CLSCompliant(true)] [assembly: StringFreezing()] */ 为每个项目引用GlobalAssemblyInfo.cs文件。

右键项目->添加->现有项,浏览到GlobalAssemblyInfo.cs文件,注意点击“添加”下拉菜单的“添加为链接”将它添加到项目,

然后将这个链接到GlobalAssemblyInfo.cs的文件移到到Properties文件夹下,使它与AssemblyInfo.cs处于同一个文件夹修改AssemblyInfo.cs文件,将GlobalAssemblyInfo.cs中已经包含的信息去除,例如:

using Systemusing System.Reflectionusing System.Runtime.CompilerServicesusing System.Runtime.InteropServices[assembly: AssemblyTitle("程序集标题")] [assembly: AssemblyDescription("程序集描述")] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("6a6263f2-35d2-4077-a1aa-cc775ca7cf84")] [assembly: CLSCompliant(true)] [assembly: StringFreezing()]将其他需要全局程序集的项目做同样处理,最后的“解决方案资源管理器”窗口的截图类似这样:

2.WinForm程序和控制台窗口Console如果你调试过SharpDevelop的源程序,会发现它在DEBUG模式时会出现一个控制台窗口,以显示日志信息。或许我使用的方法与其不同,不过你可以试一试,写出我们自己的调试日志代码。 首先要解决的问题是如何在Debug模式时显示Console窗口。我确定,这是一个WinForm项目,也没有改过它的输出类型。我们需要在项目的入口点使用一些API函数将控制台显示出来:它们是 AllocConsole 和 FreeConsole。[DllImport("kernel32.dll")] public static extern Boolean AllocConsole()[DllImport("kernel32.dll")] public static extern Boolean FreeConsole()然后我们使它在Main()开始处判断DEBUG编译标记,调用AllocConsole方法显示控制台,然后在Main()的结束处判断DEBUG编译标记,调用FreeConsole方法关闭控制台。这样,我们就可以使用Console.Write等方法将调试信息显示在这个控制台窗口里。 为了达到更好的效果,我们写一个Shell类,用它来封装Console.WriteLine方法,输出个性化信息。我是这样做的,根据输出到控制台的文本的前几个字判断为“警告”、“错误”、“注意”时,输出带有黄色、红色、绿色的文字,其他输出信息输出控制台缺省的灰色文字,以起到区分效果,还要在每条信息前加上输出信息的当时时间。 这个Shell类是这样的:/// <summary>/// 与控制台交互 /// </summary>static class Shell { /// <summary>/// 输出信息 /// </summary>/// <param name="format"></param>/// <param name="args"></param>public static void WriteLine(string format, params object[] args) { WriteLine(string.Format(format, args))} /// <summary>/// 输出信息 /// </summary>/// <param name="output"></param>public static void WriteLine(string output) { Console.ForegroundColor = GetConsoleColor(output)Console.WriteLine(@"[{0}]{1}", DateTimeOffset.Now, output)} /// <summary>/// 根据输出文本选择控制台文字颜色 /// </summary>/// <param name="output"></param>/// <returns></returns>private static ConsoleColor GetConsoleColor(string output) { if (output.StartsWith("警告")) return ConsoleColor.Yellowif (output.StartsWith("错误")) return ConsoleColor.Redif (output.StartsWith("注意")) return ConsoleColor.Greenreturn ConsoleColor.Gray} } 那么程序入口函数Main代码如下:/// <summary>/// 应用程序的主入口点。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11450827.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存