2017-03-29 11 views
0

2番目の接続文字列を気にしたくありません!そこで私は、私のapp.configをで私を使用しようとしたために:NLogを使用してEntity Frameworkでデータベースにログする(コードファースト)

<connectionStrings> 
<add name="MyContext" connectionString="Data Source=LW02616083;Initial Catalog=LoggerDb;Integrated Security=true" providerName="System.Data.SqlClient" /> 
私は、この目標

<targets async="true"> 
<target xsi:type="Database" 
     name="database" 
     connectionStringName="MyContext" 
     commandText="INSERT INTO [dbo].[EntityLogEntries] ([CallSite], [Date], [Exception], [Level], [Logger], [MachineName], [Message], [StackTrace], [Thread], [Username]) VALUES (@CallSite, @Date, @Exception, @Level, @Logger, @MachineName, @Message, @StackTrace, @Thread, @Username);"> 
    <parameter name="@CallSite" layout="${callsite:filename=true}" /> 
    <parameter name="@Date" layout="${longdate}" /> 
    <parameter name="@Exception" layout="${exception}" /> 
    <parameter name="@Level" layout="${level}" /> 
    <parameter name="@Logger" layout="${logger}" /> 
    <parameter name="@MachineName" layout="${machinename}" /> 
    <parameter name="@Message" layout="${message}" /> 
    <parameter name="@StackTrace" layout="${stacktrace}" /> 
    <parameter name="@Thread" layout="${threadid}" /> 
    <parameter name="@Username" layout="${windows-identity:domain=true}" /> 
</target> 

を使用しかし、今、私は何のアイデアを持っていない私のNLog.configで

Entity FrameworkのDbContextと組み合わせてNLogを使用する方法

完全なコード:

using System; 
using NLog; 

namespace NLog_Db 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      Logger logger = LogManager.GetCurrentClassLogger(); 
      try 
      { 
       int zero = 0; 
       int result = 5/zero; 
      } 
      catch (DivideByZeroException ex) 
      { 
       logger.Error("Got the error", ex); 
      } 


      //LoggerContext db = new LoggerContext(); 

      //using (db) 
      //{ 
      // for (int i = 0; i < 10; i++) 
      // { 
      //  var LogEntry = new EntityLogEntry 
      //  { 
      //   CallSite = "Test CallSite " + i, 
      //   Date = "Test Date " + i, 
      //   Exception = " Test EX " + i, 
      //   Level = "Test Level " + i, 
      //   Logger = "Test Logger" + i, 
      //   MachineName = "Test Machinename " + i, 
      //   Message = "Test Message " + i, 
      //   StackTrace = "Test StackTrace " +i, 
      //   Thread = "Test Thread " +i, 
      //   Username = "Test Username " + i 
      //  }; 
      //  db.EntityLogEntries.Add(LogEntry); 
      // } 
      // db.SaveChanges(); 
      //} 
      Console.WriteLine("finished"); 
      Console.ReadLine(); 
     } 
    } 
} 

エンティティ:

using System; 
namespace NLog_Db 
{ 
    public class EntityLogEntry 
    { 
     public string CallSite { get; set; } 
     public string Date { get; set; } 
     public string Exception { get; set; } 
     public int Id { get; set; } 
     public string Level { get; set; } 
     public string Logger { get; set; } 
     public string MachineName { get; set; } 
     public string Message { get; set; } 
     public string StackTrace { get; set; } 
     public string Thread { get; set; } 
     public string Username { get; set; } 
    } 
} 

コンテキスト:

using System; 
using System.Data.Entity; 
using System.Data.Common; 

namespace NLog_Db 
{ 
    public class LoggerContext :DbContext 
    { 
     public LoggerContext() : base("name=MyContext") 
     { 
     } 

     public LoggerContext(DbConnection connection) 
       : base(connection, true) 
     { 

     } 

     public DbSet<EntityLogEntry> EntityLogEntries { get; set; } 
    } 
} 

は、誰もがアイデアを得ていますか?

ありがとうございました

+0

内部ログを確認してください。また、どの接続が使用されているかも確認してください。 https://github.com/NLog/NLog/wiki/Internal-logging – Julian

+0

あなた自身の答えを受け入れてください(おそらく他の人には役に立たないので質問を削除する方が良いでしょうか?) – Julian

答えて

0

これはNLogの問題ではありませんでした。ごめんなさい!問題は私のSQLサーバーでした。接続文字列は正しいですが、ローカルサーバーは正しく動作していませんでした。

ありがとうございました

関連する問題