.Net - 将日志从Web应用程序推送到运行Fluentd的Docker容器

时间:2017-01-21 11:50:06

标签: c# .net docker nlog fluentd

我想将.net Web应用程序日志推送到Docker容器上运行的流畅图像。为此,我安装了Docker Toolbox,并在Docker上运行了流畅的图像。

首先,我尝试通过telnet向容器发送文本,容器收到这些消息并在命令行上打印。

为了从Web应用程序发送日志,我尝试了此处描述的方法(使用Nlog.Targets.Fluentd包)https://groups.google.com/d/msg/fluentd/bjf6V0E8oAQ/cTBlxXMbzkAJ。 主机,端口,标签等连接细节与我在telnet中使用的相同,但我无法将日志发送到容器。

Docker图像存储库名称是"流畅的"和标签名称是"最新"。这就是我在docker上运行流畅图像的方式:

docker run -it ip 47001:24224 fluent:latest

这就是我使用Nlog.Targets.Fluentd方法的方法:

using (var fluentdTarget = new NLog.Targets.Fluentd())
{
    fluentdTarget.Layout = new NLog.Layouts.SimpleLayout("${longdate}|${level}|${callsite}|${logger}|${message}");
    fluentdTarget.Host = "192.168.99.100"; // IP of the docker
    fluentdTarget.Port = 47001; // mapped port number on host
    fluentdTarget.Tag = "fluent:latest"; 
    config.AddTarget("fluentd", fluentdTarget);
    config.LoggingRules.Add(new NLog.Config.LoggingRule("demo", LogLevel.Debug, fluentdTarget));
    var loggerFactory = new LogFactory(config);
    var logger = loggerFactory.GetLogger("demo");
    logger.Info("Hello World!");
}

我该如何解决这个问题?有没有其他方法可以从Web应用程序向容器发送日志?

0 个答案:

没有答案