1

現在、ハングファイアを使用して、Windows サービスでいくつかのジョブを実行しています。ジョブは WebAPI から起動されます。

現在、すべてのジョブが成功するとシステムは正常に動作していますが、例外が発生したときにログが記録されません。カスタム ロガーを使用して Hangfire からメッセージを受信した経験のある人はいますか?

私のロガーは基本的な NLog インターフェイスです:

public class Logger : ILogger
{
    public readonly NLog.Logger logger;

    public Logger(string name)
    {
        if (LogManager.Configuration == null)
        {
            FallbackInitialisation();
        }

        logger = LogManager.GetLogger(name);
    }

    public Trace(string message)
    //etc.
}

Windows サービスで Hangfire ジョブ サーバーを次のように構成しています。

SqlServerStorage storage = new SqlServerStorage("myConnectionString");
BackgroundJobServerOptions options = new BackgroundJobServerOptions();
m_server = new BackgroundJobServer(options, storage);
GlobalJobFilters.Filters.Add(new AutomaticRetryAttribute { Attempts = 0 });

hangfire のドキュメントに基づいて、必要な参照を追加し、ジョブ サーバーのセットアップ後に以下を追加して、それに従ってみましたが、まだログは生成されませんでした。

var properties = new NameValueCollection();
properties["configType"] = "INLINE";
LogManager.Adapter = new NLogLoggerFactoryAdapter(properties);

throw new Exception()ジョブによって呼び出されるメソッドで例外をシミュレートしているだけです。ジョブは webApi 呼び出しで次のように作成されます。

[HttpGet]
public void TestStartJob()
{
    m_logger.Trace("TestStartJob");
    BackgroundJob.Enqueue(() => m_service.TestStartJob());
}

私が探しているのは、Hangfire で使用するためにロギングを適切に構成した経験があるかどうかです。

4

1 に答える 1