现在我在AppHarbor中有一个Web应用程序和3个后台应用程序。我想使用日志条目将每个应用程序记录在不同的位置。根据 AppHarbor 的日志条目文档 https://logentries.com/doc/appharbor/令牌密钥是从 AppHarbor 强制执行的 web.config 和 app.config [配置变量] 中读取的。
如何配置每个应用程序以登录不同的日志位置(例如。Appharbor/website, AppHarbor/Console1, AppHarbor/Console2)?
追加器/目标定义中指定令牌来覆盖 AppHarbor 注入的配置变量。不确定您使用的是哪个框架,但如果是 NLog,那么您在 web/app.config 中有此行的位置
<target name="logentries" type="Logentries" debug="true"
layout="${date:format=ddd MMM dd} ${time:format=HH:mm:ss} ${date:format=zzz yyyy} ${logger} : ${LEVEL}, ${message}"/>
添加 token="abc",以便您拥有以下内容:
<target name="logentries" type="Logentries" debug="true" token="abc"
layout="${date:format=ddd MMM dd} ${time:format=HH:mm:ss} ${date:format=zzz yyyy} ${logger} : ${LEVEL}, ${message}"/>
然后,如果您使用的是log4net插件,则有以下部分:
<appender name="LeAppender" type="log4net.Appender.LogentriesAppender, LogentriesLog4net">
<Debug value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{ddd MMM dd HH:mm:ss zzz yyyy} %logger %: %level%, %m" />
</layout>
</appender>
添加,以便您拥有以下内容:
<appender name="LeAppender" type="log4net.Appender.LogentriesAppender, LogentriesLog4net">
<Debug value="true" />
<Token value="abc" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d{ddd MMM dd HH:mm:ss zzz yyyy} %logger %: %level%, %m" />
</layout>
</appender>
此处设置的令牌值将优先于 Appharbor 注入的值,因此对于具有自己的 web/app.config 的每个应用,您可以使用此方法输入自己的令牌。
我发现我可以通过以下行在运行时设置令牌:
private static readonly ILog log = log4net.LogManager.GetLogger(typeof(Program));
appender = (LogentriesAppender)log.Logger.Repository.GetAppenders()[0];
appender.Token = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
//now log method will use my token
log.Info("Hello World");