2

现在我在 AppHarbor 有一个 Web 应用程序和 3 个后台应用程序。我想使用 logentries 将每个应用程序记录在不同的位置。基于 AppHarbor https://logentries.com/doc/appharbor/的 logentries 文档,令牌密钥是从 appharbor 强制执行的 web.config 和 app.config [配置变量] 中读取的。

如何配置每个应用程序以登录不同的日志位置(例如 Appharbor/Website、AppHarbor/Console1、AppHarbor/Console2)?

4

2 回答 2

0

您可以通过在 appender/target 定义中指定 Token 来覆盖 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 的应用程序,您可以使用此方法输入自己的令牌。

于 2013-10-30T23:33:35.610 回答
0

我发现我可以通过以下几行在运行时设置令牌:

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");
于 2013-11-04T12:54:49.960 回答