LoginSignup
1
0

Excel-DNA で、log4net を利用する(C#で設定)

Last updated at Posted at 2024-03-31

Excel-DNAで、log4netの設定を別ファイルにせず(うまくできなかった)、C#のコードで設定する方法を採用した。

public static class SomeClass
{
    static SomeClass()
    {
        Logger.Setup();
    }
   public static void SomeMethod()
   {
        WriteLog.Write("log");
   }
}

Logger.Setup() は、アプリ全体で、1度だけ実行すれば良いはず。

/// <summary>
/// ログを記録
/// </summary>
/// <see href="https://qiita.com/n-noguchi/items/5181fc9dc7929ddb7d13"/>
public static class WriteLog
{
    static ILog logger = LogManager.GetLogger(typeof(WriteLog));

    public static void Write(string log)
    {
        logger.Info(log);
    }
}

設定例

public class Logger
{
    public static void Setup()
    {
        Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

        PatternLayout patternLayout = new PatternLayout();
        patternLayout.ConversionPattern = "%date [%thread] [%-5level] %logger - %message%n";
        patternLayout.ActivateOptions();

        RollingFileAppender roller = new RollingFileAppender();
        roller.AppendToFile = true;
        roller.DatePattern = "yyyyMMdd'.log'";
        roller.File = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"HOGE\HOGE XL Add-In\Logs\Trace_");
        roller.Layout = patternLayout;
        roller.MaxSizeRollBackups = -1;
        roller.MaximumFileSize = "10MB";
        roller.RollingStyle = RollingFileAppender.RollingMode.Composite;
        roller.StaticLogFileName = false;
        roller.ActivateOptions();
        hierarchy.Root.AddAppender(roller);

        hierarchy.Root.Level = Level.Info;
        hierarchy.Configured = true;
    }
}

roller.Fileの指定で、${APPDATA}は機能しなかった。

参照

環境

  • .NET6
  • ExcelDna 1.7
  • log4net 2.0.17

Note

ExcelDNAで作成したアドインでログを記録するのは、ガンジス XL アドイン:インボイス用関数で必要になったため。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0