没有调试器的C#Visual Studio运行程序(ctrl + F5)

时间:2016-01-20 07:53:12

标签: c# debugging visual-studio-2012

所以我使用我公司的一个dll。

    namespace LoggingSample
    {

    internal static class Log
    {
        private static ILogger s_log = LoggerRegistry.CreateLogger("ManagedLoggingSample");

        static internal ILogger Logger
        {
            get { return s_log; }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ILogProvider logProvider = new Logging.Provider.Log4netProvider("logging.config.xml") as ILogProvider;
            LoggerConfig.registerLogInterface(logProvider);

            Console.WriteLine("Initializing logging");

            Log.Logger.message(SEVERITY.LOG_DEBUG, "Debug message 1");

            // Add more logs
            Log.Logger.message(SEVERITY.LOG_INFO, "Log info Message {0} {1}", 2, "I am an error logged message");
            Log.Logger.debug("Debug Message 2");
            Log.Logger.error("Error Log message {0} {1}", 4, "i am an error message");

            Console.WriteLine("Done");
            Console.WriteLine("Press any key to exit...");

            Console.ReadKey();            
        }
    }
 }

我的问题是,在控制台上,消息显示在Debug和Release中,只在没有调试器的情况下运行。

enter image description here

程序还在文件上输出文本,但没有调试器,文件为空; 任何人都知道这里可能出现什么问题?可能是设置问题?

.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
  <log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="RollingLogFileAppender" />
    <appender-ref ref="ColoredConsoleAppender" />
  </root>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="ManagedLoggingSample.log" />
    <appendToFile value="false" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="2KB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>
      <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
          <mapping>
              <level value="ERROR" />
              <foreColor value="White" />
              <backColor value="Red, HighIntensity" />
          </mapping>
          <mapping>
              <level value="DEBUG" />
              <backColor value="Green" />
          </mapping>
          <layout type="log4net.Layout.PatternLayout">
              <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
          </layout>
      </appender>
  <logger name="ManagedLoggingSample" >
    <level value="ALL" />
    <appender-ref ref="RollingLogFileAppender" />
  </logger>

</log4net>

我忘了提到只有在没有调试器的Release中它没有在控制台上显示任何内容并且日志文件为空,调试的.exe工作正常。

1 个答案:

答案 0 :(得分:0)

对于内部静态类Log,我提供了一个空的静态构造函数(static Log() { })。我认为这是一个优化问题,因为类是静态的,它是在调用之前创建的,现在因为我们有一个构造函数 它知道在调用时创建日志。如果有人有另一个答案,我很乐意听到。