NLog를 사용하여 RavenDb 데이터베이스에 로그인하고 싶습니다. 이 경우 기존 NLog Target이 존재하지 않으므로 (this 및 검색에 따라) 내 자신의 글을 쓰려고합니다. 나는 RavenDb 클라이언트의 NLog 설정과 계속 충돌하고 있으며이를 해결하는 방법을 찾을 수는 없습니다. 여기 내 대상의 :RavenDb NLog 설정 충돌
namespace NLog.RavenDb
{
class LogEntry
{
public string Id { get; set; }
public Exception Exception { get; set; }
public string LogLevel { get; set; }
public StackTrace StackTrace { get; set; }
public DateTimeOffset TimeStamp { get; set; }
public string Message { get; set; }
}
public class RavenDbTarget : NLog.Targets.TargetWithLayout
{
public static IDocumentStore Store { get; set; }
protected override void Write(LogEventInfo logEvent)
{
if (Store == null)
{
const string noStoreWarning = "No Document Store set for the RavenDb Log target";
Debug.WriteLine(noStoreWarning);
return;
}
LogEntry entry = new LogEntry
{
Exception = logEvent.Exception,
LogLevel = logEvent.Level.Name,
Message = logEvent.FormattedMessage,
StackTrace = logEvent.StackTrace,
TimeStamp = new DateTimeOffset(logEvent.TimeStamp)
};
using (var session = Store.OpenSession())
{
session.Store(entry);
session.SaveChanges();
}
}
}
}
그리고 여기 나는 그것이 SimpleConfigurator 작업을 얻을 수있는 방법은 다음과 같습니다
RavenDbTarget.Store = new DocumentStore { Url = "http://localhost:8080/" };
RavenDbTarget.Store.Initialize();
NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(new RavenDbTarget());
Logger logger = NLog.LogManager.GetLogger("Any");
logger.Info("Hi");
그러나, NLog.config 너무 RavenDb에 의해 사용되는, 그래서 난 내 대상에 대한 참조를 넣을 때 거기에 Store.Initialize() 예외가 throw됩니다.
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<extensions>
<add assembly="Nlog.RavenDb"/>
</extensions>
<targets>
<target xsi:type="NLog.RavenDb.RavenDbTarget" name="Raven"/>
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
<rules>
<logger minlevel="Trace" name="Any" writeTo="Raven" />
</rules>
</nlog>
가 어떻게 내 NLog.config 파일이 그것의 RavenDb의 사용과 멋진 플레이 할 수 있습니다 : 여기 NLog.config에서 재판을 무엇 (NLog.RavenDb는 RavenDb 대상을 포함하는 내 라이브러리 프로젝트의 이름입니다)?
니스, 나는 이것을 찾고있었습니다. – user981375