根據LogEntries documentation帳號密鑰應填入Web.config文件。同時,它存在於AppHarbor配置變量中。 我可以從配置變量中讀取值而不是使用硬編碼值嗎?從環境中讀取LogEntries配置
2
A
回答
1
的le_nlog包已經在最近幾天被更新與抓住appharbor相應的代碼注入配置變量從web.config,所以現在可以安裝nuget,將附加組件添加到您的應用程序中,並且無需手動編輯任何內容即可輕鬆完成。除非你想從本地機器上登錄,否則在上面的例子中就已經指出了,在這種情況下,配置變量應該被粘貼到web.config.transform中的appSettings部分的web.config中le_nlog包
2
您不必手動添加配置,AppHarbor會自動插入相關的值。請注意,如果您想在本地計算機上測試時使用LogEntries,則需要將配置指定爲從AppHarbor複製的配置。
0
使用this class而不是le_nlog包中的那個。同時更改組件的配置:
<nlog>
<extensions>
<add assembly="MyAssembly"/>
</extensions>
<targets>
<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}, ${exception:format=tostring}" />
</targets>
<rules>
<logger name="*" minLevel="Info" appendTo="logentries" />
</rules>
/*
Logentries Log4Net Logging agent
Copyright 2010,2011 Logentries, Jlizard
Mark Lacomber <[email protected]>
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Security;
using System.Net.Sockets;
using System.IO;
using NLog;
using NLog.Common;
using NLog.Config;
using NLog.Internal;
using NLog.Internal.NetworkSenders;
using NLog.Layouts;
using NLog.Targets;
namespace Le
{
[Target("Logentries")]
public sealed class LeTarget : TargetWithLayout
{
private SslStream sslSock = null;
private TcpClient leSocket = null;
private System.Text.UTF8Encoding encoding;
public LeTarget()
{
}
string GetKey()
{
return ConfigurationManager.AppSettings["LOGENTRIES_ACCOUNT_KEY"];
}
string GetLocation()
{
return ConfigurationManager.AppSettings["LOGENTRIES_LOCATION"];
}
[RequiredParameter]
public bool Debug { get; set; }
public bool KeepConnection { get; set; }
private void createSocket(String key, String location)
{
this.leSocket = new TcpClient("api.logentries.com", 443);
this.leSocket.NoDelay = true;
this.sslSock = new SslStream(this.leSocket.GetStream());
this.encoding = new System.Text.UTF8Encoding();
this.sslSock.AuthenticateAsClient("logentries.com");
String output = "PUT /" + key + "/hosts/" + location + "/?realtime=1 HTTP/1.1\r\n";
this.sslSock.Write(this.encoding.GetBytes(output), 0, output.Length);
output = "Host: api.logentries.com\r\n";
this.sslSock.Write(this.encoding.GetBytes(output), 0, output.Length);
output = "Accept-Encoding: identity\r\n";
this.sslSock.Write(this.encoding.GetBytes(output), 0, output.Length);
output = "Transfer_Encoding: chunked\r\n\r\n";
this.sslSock.Write(this.encoding.GetBytes(output), 0, output.Length);
}
private byte[] GetBytesToWrite(LogEventInfo logEvent)
{
string text = this.Layout.Render(logEvent) + "\r\n";
return this.encoding.GetBytes(text);
}
protected override void Write(LogEventInfo logEvent)
{
if (this.sslSock == null)
{
try
{
this.createSocket(this.GetKey(), this.GetLocation());
}
catch (Exception e)
{
WriteDebugMessages("Error connecting to Logentries", e);
}
}
byte[] message = this.GetBytesToWrite(logEvent);
try
{
this.sendToLogentries(message);
}
catch (Exception)
{
try
{
this.createSocket(this.GetKey(), this.GetLocation());
this.sendToLogentries(message);
}
catch (Exception ex)
{
WriteDebugMessages("Error sending log to Logentries", ex);
}
}
}
private void sendToLogentries(byte[] message)
{
this.sslSock.Write(message, 0, message.Length);
}
private void WriteDebugMessages(string message, Exception e)
{
if (!this.Debug) return;
string[] messages = { message, e.ToString() };
foreach (var msg in messages)
{
System.Diagnostics.Debug.WriteLine(msg);
Console.Error.WriteLine(msg);
}
}
}
}
相關問題
- 1. sails.js從配置中獲取環境值
- 2. COM +組件不能從靜態環境中讀取配置
- 3. LogEntries配置中的參數
- 4. 環境配置
- 5. 讀取PHP池配置文件中的Linux環境變量
- 6. 如何從文件中讀取環境
- 7. 從cookie中讀取語言環境
- 8. JHipster環境配置
- 9. Juggernaut環境配置
- 10. 配置Eclipse環境
- 11. 設置/讀取環境變量
- 12. 從文件中讀取SCons環境設置
- 13. 越來越薄讀取配置的用戶環境
- 14. Python:在限制環境下讀取/存儲配置文件?
- 15. 如何從Spring環境中配置的EntityManager獲取連接?
- 16. 配置基本URL取決於環境
- 17. 從帕格讀取環境變量
- 18. 如何配置PhpStorm以從Vagrant VM讀取GoLang環境變量GOROOT
- 19. 從環境變量配置舞者?
- 20. 在Spring應用程序環境中讀取環境變量
- 21. Sinatra動態配置環境
- 22. web2py配置每個環境
- 23. SharePoint SPItemEventReceiver環境配置
- 24. 配置環境,在Heroku
- 25. 環境配置管理?
- 26. 訪問Rails環境配置
- 27. 如何配置python環境
- 28. Eclipse配置「執行環境」
- 29. Linux編程環境配置
- 30. Kubernetes:管理環境配置
我發現,因爲自定義nlog目標是在AppHarbor變換無法插入自定義密鑰和位置值(或者他們可以,但它們在AppSettings中)的自定義配置部分中配置的。我使用了類似於下面的解決方案,我修改它以讀取常規AppSetting條目而不是定製配置節。 – 2012-04-05 06:11:00