从log4net中的记录器名称中删除程序集信息

时间:2017-08-04 16:48:17

标签: log4net

我正在使用我的log4net日志记录系统,而且我在查找%logger条目中删除程序集信息的方法时遇到了麻烦。日志记录模式看起来像conversionPattern value="[%60logger]] %message%newline",但是当日志中打印出行时,记录器会显示汇编信息,例如Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]。我认为这是因为记录器是从通用类型创建的,但我不确定。我需要删除该汇编信息,但我不想更改GetLogger的每个实例。

1 个答案:

答案 0 :(得分:2)

%logger应打印输出记录器的名称,仅当该名称包含Version=1.0.0.0, Culture=neutral, PublicKeyToken=null时才打印。检查记录器时的操作:

LogManager.GetLogger(typeof(Program).FullName); //Gives name + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

如果您需要类型名称,请执行以下操作:

LogManager.GetLogger(typeof(Program); //Gives name only

测试程序以查看返回的名称:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(typeof(GenericClass<Program>));
        Console.WriteLine(typeof(GenericClass<Program>).Name);
        Console.WriteLine(typeof(GenericClass<Program>).FullName);
        Console.WriteLine(typeof(GenericClass<Program>).ToString());
        Console.ReadKey();
    }

    class GenericClass<T> { }
}

输出:

ConsoleApp2.Program+GenericClass`1[ConsoleApp2.Program]
GenericClass`1
ConsoleApp2.Program+GenericClass`1[[ConsoleApp2.Program, ConsoleApp2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
ConsoleApp2.Program+GenericClass`1[ConsoleApp2.Program]