2016-11-12 5 views
0

nlogデータベースターゲットを使用しようとしています。 データベースを手動で作成しないと、最初は機能しません。 もう一つ重要なことは、私は記録できません。私は私のパラメータのレイアウトについてはエラーが発生します。私は手動でテーブルを作成し、それが動作する「アプリケーション」パラメータのようなレイアウトに定数を置く場合nlogデータベースターゲットパラメータのレイアウトエラー

2016-11-12 18:45:49.0479 Debug Setting 'DatabaseParameterInfo.layout' to '${logged}' 
2016-11-12 18:45:49.0744 Warn Error when setting property 'Layout' on 'NLog.Targets.DatabaseParameterInfo' Exception: System.ArgumentException: LayoutRenderer cannot be found: 'logged' 
    at NLog.Config.Factory`2.CreateInstance(String name) 
    at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr) 
    at NLog.Layouts.LayoutParser.CompileLayout(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr, Boolean isNested, String& text) 
    at NLog.Layouts.SimpleLayout.set_Text(String value) 
    at NLog.Internal.PropertyHelper.TryNLogSpecificConversion(Type propertyType, String value, Object& newValue, ConfigurationItemFactory configurationItemFactory) 
    at NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj, String propertyName, String value, ConfigurationItemFactory configurationItemFactory) 
2016-11-12 18:45:49.0909 Error Error in Parsing Configuration File. Exception: NLog.NLogConfigurationException: Exception occurred when loading configuration from C:\Github\private\WeBees\WeBees Client\WeBees.Server\NLog.config ---> NLog.NLogConfigurationException: Error when setting property 'Layout' on NLog.Targets.DatabaseParameterInfo ---> System.ArgumentException: LayoutRenderer cannot be found: 'logged' 
    at NLog.Config.Factory`2.CreateInstance(String name) 
    at NLog.Layouts.LayoutParser.ParseLayoutRenderer(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr) 
    at NLog.Layouts.LayoutParser.CompileLayout(ConfigurationItemFactory configurationItemFactory, SimpleStringReader sr, Boolean isNested, String& text) 
    at NLog.Layouts.SimpleLayout.set_Text(String value) 
    at NLog.Internal.PropertyHelper.TryNLogSpecificConversion(Type propertyType, String value, Object& newValue, ConfigurationItemFactory configurationItemFactory) 
    at NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj, String propertyName, String value, ConfigurationItemFactory configurationItemFactory) 
    --- End of inner exception stack trace --- 
    at NLog.Internal.PropertyHelper.SetPropertyFromString(Object obj, String propertyName, String value, ConfigurationItemFactory configurationItemFactory) 
    at NLog.Config.XmlLoggingConfiguration.ConfigureObjectFromAttributes(Object targetObject, NLogXmlElement element, Boolean ignoreType) 
    at NLog.Config.XmlLoggingConfiguration.AddArrayItemFromElement(Object o, NLogXmlElement element) 
    at NLog.Config.XmlLoggingConfiguration.SetPropertyFromElement(Object o, NLogXmlElement element) 
    at NLog.Config.XmlLoggingConfiguration.ParseTargetElement(Target target, NLogXmlElement targetElement) 
    at NLog.Config.XmlLoggingConfiguration.ParseTargetsElement(NLogXmlElement targetsElement) 
    at NLog.Config.XmlLoggingConfiguration.ParseNLogElement(NLogXmlElement nlogElement, String filePath, Boolean autoReloadDefault) 
    at NLog.Config.XmlLoggingConfiguration.ParseTopLevel(NLogXmlElement content, String filePath, Boolean autoReloadDefault) 
    at NLog.Config.XmlLoggingConfiguration.Initialize(XmlReader reader, String fileName, Boolean ignoreErrors) 
    --- End of inner exception stack trace --- 

マイnlog.config

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     internalLogFile="C:\Github\private\WeBees\WeBees Client\WeBees.Server\Logs\nlog.txt" internalLogLevel="Trace"> 
    <targets> 
    <target name="logfile" xsi:type="File" fileName="C:\Github\private\WeBees\WeBees Client\WeBees.Server\Logs\log.txt" /> 
    <target xsi:type="ColoredConsole" name="console" /> 
    <target name="database" xsi:type="Database"> 
     <!-- 
    Remarks: 
    The appsetting layouts require the NLog.Extended assembly. 
    The aspnet-* layouts require the NLog.Web assembly. 
    The Application value is determined by an AppName appSetting in Web.config. 
    The "NLogDb" connection string determines the database that NLog write to. 
    The create dbo.Log script in the comment below must be manually executed. 
    --> 

     <connectionStringName>dev</connectionStringName> 

     <!-- 
    SET ANSI_NULLS ON 
    SET QUOTED_IDENTIFIER ON 
    CREATE TABLE [dbo].[Log] (
     [Id] [int] IDENTITY(1,1) NOT NULL, 
     [Application] [nvarchar](50) NOT NULL, 
     [Logged] [datetime] NOT NULL 
    CONSTRAINT [PK_dbo.Log] PRIMARY KEY CLUSTERED ([Id] ASC) 
     WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
    --> 

     <commandText> 
     insert into dbo.Log (
     Application, Logged 
     ) values (
     @Application, @Logged 
     ); 
     </commandText> 

     <parameter name="@application" layout="dadasda" /> 
     <parameter name="@logged" layout="${logged}" /> 
    </target> 
    </targets> 
    <rules> 
    <logger name="*" minlevel="Info" writeTo="logfile,console" /> 
    </rules> 
</nlog> 

: はアウトnlog内部ログから置きます。

私はドキュメントに従っていますが、動作させることはできません。私はNLog & NLog.Webの拡張がインストールされています。

ありがとうございます!

答えて

0

エラーメッセージに示されるように、${logged}を定義する必要があります。お使いの設定ファイルに:インストールのクエリを提供する場合

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     internalLogFile="C:\Github\private\WeBees\WeBees Client\WeBees.Server\Logs\nlog.txt" internalLogLevel="Trace"> 

    <variable name="logged" value="my var" /> 
    <targets> 

それとも別のレイアウトレンダラと交換し、例えば${message}、テーブルの作成についてlist of possible layout renderers

を参照してください、NLogは、テーブルを作成します。

LogManager.Configuration.Install(new InstallationContext()); //install all the targets, e.g. database, eventlogger etc. 

<target xsi:type="Database" name="db"> 

    <!-- connection string --> 
    <dbProvider>System.Data.SqlClient</dbProvider> 
    <connectionString>server=.\SQLEXPRESS;database=MyLogs;integrated security=sspi</connectionString> 

    <!-- commands to install database --> 
    <install-command> 
    <text>CREATE DATABASE MyLogs</text> 
    <connectionString>server=.\SQLEXPRESS;database=master;integrated security=sspi</connectionString> 
    <ignoreFailures>true</ignoreFailures> 
    </install-command> 

    <install-command> 
    <text> 
     CREATE TABLE LogEntries(
     id int primary key not null identity(1,1), 
     TimeStamp datetime2, 
     Message nvarchar(max), 
     level nvarchar(10), 
     logger nvarchar(128)) 
    </text> 

とC#、インストールを呼び出します