NLog - Fluentd 노드로 로그를 보내는 방법
NuGet에서 아래 2개를 설치한다
Fluentd 노드로 로그를 보내기 위한 설정은 NLog.config에서 지정할 수 없으므로 코드 상에서 설정해야 한다.
public class Configurator
{
// Fluentd 설정을 반환한다
static NLog.Targets.Target GetFluentdTarget()
{
var target = new NLog.Targets.Fluentd();
target.Layout = new NLog.Layouts.SimpleLayout("${message}");
target.Host = "127.0.0.1"; // TODO: 상황에 맞게 변경한다
target.Port = 24224; // TODO: 상황에 맞게 변경한다
target.Tag = "tag.tag"; // TODO: 상황에 맞게 변경한다
target.NoDelay = true;
target.LingerEnabled = false;
target.LingerTime = 2;
target.EmitStackTraceWhenAvailable = false;
return WrapTarget(target);
}
// Fluentd 설정만으로는 동기적으로 로그를 보내므로 비동기&리트라이 설정을 한다.
static NLog.Targets.Target WrapTarget(NLog.Targets.Target target)
{
var retryWrapper = new NLog.Targets.Wrappers.RetryingTargetWrapper("RetryingWrapper", target, 3, 1000);
var asyncWrapper = new NLog.Targets.Wrappers.AsyncTargetWrapper("AsyncWrapper", retryWrapper);
return asyncWrapper;
}
public static NLog.Config.LoggingConfiguration GetConfig()
{
var config = new NLog.Config.LoggingConfiguration();
var target = GetFluentdTarget();
config.AddTarget("fluentd", target);
config.LoggingRules.Add(new NLog.Config.LoggingRule("*", LogLevel.Debug, target));
return config;
}
}
// Global.asax.cs(애플리케이션 초기화 시에 설정한다)
public class Global : HttpApplication
{
protected void Application_Start()
{
// Fluentd 설정을 하는 Config를 설정한다
LogManager.Configuration = LogConfigurator.GetConfig();
}
}
출처: http://qiita.com/akehoyayoi@github/items/87b268327dd2c2b6cd73
이 글은 2017-05-03에 작성되었습니다.