C# 是否只希望日志存储在记录器中,而不显示在控制台中?

C# 是否只希望日志存储在记录器中,而不显示在控制台中?,c#,log4net,C#,Log4net,使用来自以下站点的log4net示例: 我正在使用命令输入参数“User”或“NoUser”。 用户只将文本输出到控制台,而NoUser只将文本输出到日志文件。从这个例子中,我已经让它工作了,但是当输入'NoUser'时,它会将文本写入输出文件和控制台应用程序 因此,我使用静态类设置用户/无用户: public static class Log { public static readonly ILog log = LogManager.GetLogger(typeof(Program)

使用来自以下站点的log4net示例:

我正在使用命令输入参数“User”或“NoUser”。 用户只将文本输出到控制台,而NoUser只将文本输出到日志文件。从这个例子中,我已经让它工作了,但是当输入'NoUser'时,它会将文本写入输出文件和控制台应用程序

因此,我使用静态类设置用户/无用户:

public static class Log
{
    public static readonly ILog log = LogManager.GetLogger(typeof(Program));
    public static bool _user;

    public static void UseLog4Net(string msg)
    {
        if (_user)
        {
            Console.WriteLine(msg);
        } 
        else
        {
            log.Debug(msg);
        }
    }
}
然后从我尝试测试的程序中:

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

static void Main(string[] args)
{
    bool verbose = false;
    bool user = false;

    try
    {
        OutputHeader();

        ProcessParameters(args, out verbose, out user);

        Log._verbose = verbose;
        Log._user = user;
    }
}

private static void ProcessParameters(string[] args, out bool verbose, out bool user)
{
    verbose = CheckArgs(args, "verbose", "quiet");           
    user = CheckArgs(args, "user", "nouser");

    if (!user)
    {
        Console.WriteLine("TEST 1");

        //Console.SetOut(File.CreateText(@".\log" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".log"));
        log4net.Config.BasicConfigurator.Configure();

        Log.UseLog4Net("ABC");

        Console.ReadLine();  

        OutputHeader();
    }
}

private static bool CheckArgs(string[] args, string trueValue, string falseValue)
{
    foreach (string arg in args)
    {
        if (arg.ToLower() == trueValue.ToLower())
        {
            return true;
        }
        else if (arg.ToLower() == falseValue.ToLower())
        {
            return false;
        }
    }

    return false;
}
这里ABC被写入控制台和文本文件。我只希望它被写入文本文件

有什么想法吗

更新


请显示用户是什么。您是否绝对肯定这是唯一正在执行的代码?你的log4net配置看起来怎么样?关于你的编辑:你还没有告诉我们任何事情。什么是用户?用户是来自命令行参数的输入参数,用户将在控制台应用程序中显示文本,nouser将仅在文本文件中显示文本。请添加演示如何获取用户值的代码。当您只需执行user=true;,它是否有效;?没有代码可以获取值,我右键单击项目,从“调试”选项卡中选择属性,在“开始选项”中,我在命令行参数中输入“DownloadDept verbose nouser”
<configSections>
   <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
  <root>
    <level value="DEBUG" />
    <appender-ref ref="LogFileAppender" />
  </root>
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
    <param name="File" value="C:\Try\logger\logger\bin\Debug\log + "Monday" + .txt" />
    <param name="AppendToFile" value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
    </layout>
  </appender>
</log4net>