この記事は、FireBird .Netプロバイダーのプロジェクトへの接続、およびNLogの初期インストールには影響しないことに注意してください。
NLogの設定は、XMLファイルであるNLog.configファイルを適切に設定することです。 最初のカップルでは、ロギングシステムをオンにした後、プロジェクトの起動が停止し、アプリケーションのメインフォームの初期化に失敗するという問題に遭遇しました。 この理由は、NLogが適切に構成されていなかったためです。 タスクを簡素化して神経を節約するには、構成ファイルに2行追加する必要があります。
throwExceptions="true"
internalLogFile="file.txt"
次回アプリケーションを起動すると、実行可能ファイルのあるフォルダーにfile.txtが作成されます。このファイルには、NLogシステム自体のかなり詳細なログが含まれており、構成エラーをキャッチできます。
ログの「受信者」の設定は、タグ「target」にあります。 最も困難なことは、3つのものを取得することでした:
1)トークン付きのDBMSプロバイダー名
2)DB接続文字列
3)データベースとそのパラメーターへのリクエスト
最初のポイントは、Googleの助けを借りて克服されました。 しかし、2番目と3番目の段落では、より困難でした。 アプリケーションから接続文字列を取得しました。これは、他のマニュアルに基づいて、すでにFireBirdデータベースに接続できます。 あまり科学的ではない「poke」メソッドを使用して、リクエストとそのパラメーターを整理しました。 苦労しないように、すぐに機能する「レシーバー」設定を使用します。
< target
xsi:type ="Database"
name ="db"
dbProvider ="FirebirdSql.Data.FirebirdClient.FbConnection, FirebirdSql.Data.FirebirdClient, Version=2.6.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"
useTransactions ="true"
connectionString ="server type=Embedded;initial catalog=FYT.FDB;character set=WIN1251;dialect=3;client library=fbembed.dll;user id=SYSDBA;password=masterkey"
keepConnection ="true"
commandText ="INSERT INTO logs (DT, LOG_TEXT, LEVEL_ID, CLASS, STACK_TRACE) values (@DT, @LOG_TEXT, @LEVEL_ID, @CLASS, @STACK_TRACE);" >
< parameter layout ="${longdate}" name ="@DT" />
< parameter layout ="${level}" name ="@LEVEL" />
< parameter layout ="${message}" name ="@LOG_TEXT" />
< parameter layout ="${logger}" name ="@CLASS" />
< parameter layout ="${stacktrace}" name ="@STACK_TRACE" />
</ target >
* This source code was highlighted with Source Code Highlighter .
< target
xsi:type ="Database"
name ="db"
dbProvider ="FirebirdSql.Data.FirebirdClient.FbConnection, FirebirdSql.Data.FirebirdClient, Version=2.6.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"
useTransactions ="true"
connectionString ="server type=Embedded;initial catalog=FYT.FDB;character set=WIN1251;dialect=3;client library=fbembed.dll;user id=SYSDBA;password=masterkey"
keepConnection ="true"
commandText ="INSERT INTO logs (DT, LOG_TEXT, LEVEL_ID, CLASS, STACK_TRACE) values (@DT, @LOG_TEXT, @LEVEL_ID, @CLASS, @STACK_TRACE);" >
< parameter layout ="${longdate}" name ="@DT" />
< parameter layout ="${level}" name ="@LEVEL" />
< parameter layout ="${message}" name ="@LOG_TEXT" />
< parameter layout ="${logger}" name ="@CLASS" />
< parameter layout ="${stacktrace}" name ="@STACK_TRACE" />
</ target >
* This source code was highlighted with Source Code Highlighter .
< target
xsi:type ="Database"
name ="db"
dbProvider ="FirebirdSql.Data.FirebirdClient.FbConnection, FirebirdSql.Data.FirebirdClient, Version=2.6.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"
useTransactions ="true"
connectionString ="server type=Embedded;initial catalog=FYT.FDB;character set=WIN1251;dialect=3;client library=fbembed.dll;user id=SYSDBA;password=masterkey"
keepConnection ="true"
commandText ="INSERT INTO logs (DT, LOG_TEXT, LEVEL_ID, CLASS, STACK_TRACE) values (@DT, @LOG_TEXT, @LEVEL_ID, @CLASS, @STACK_TRACE);" >
< parameter layout ="${longdate}" name ="@DT" />
< parameter layout ="${level}" name ="@LEVEL" />
< parameter layout ="${message}" name ="@LOG_TEXT" />
< parameter layout ="${logger}" name ="@CLASS" />
< parameter layout ="${stacktrace}" name ="@STACK_TRACE" />
</ target >
* This source code was highlighted with Source Code Highlighter .
dbProviderはFireBird .NETプロバイダーの名前で、現在の公式バージョン2.6.5に対応しています。 将来のバージョンでは、数字のみを変更する必要があり、トークン(PublicKeyToken = 3750abcc3150b00c)は同じままである必要があります。
connectionStringは接続文字列です。 概して、それが形成されるとき、自分自身のためにその中の何かを理解し、変更することは難しくありません。 この例では、接続はFireBird Embeddedサーバー、FYT.FDBデータベースで構成されます。FYT.FDBデータベースは、実行可能ファイルのあるディレクトリにあります。 FireBird ClassicまたはSuperServerの場合、「サーバータイプ」と「クライアントライブラリ」を変更するだけです。
commandText-データベースにデータを挿入する要求。 ロガーによって送信されるパラメーターは、「犬」、つまり @。 以下では、「パラメーター」タグの属性は、リクエストの各パラメーターを置き換える必要があるNLogを示しています。 利用可能なすべてのレイアウトオプションのリストは、NLog Webサイトにあります。
結論として、構成ファイルNLog.configの完全なリストを提供します。
<? 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"
throwExceptions ="true"
internalLogFile ="file.txt">
< targets >
< target
xsi:type ="Database"
name ="db"
dbProvider ="FirebirdSql.Data.FirebirdClient.FbConnection, FirebirdSql.Data.FirebirdClient, Version=2.6.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"
useTransactions ="true"
connectionString ="server type=Embedded;initial catalog=FYT.FDB;character set=WIN1251;dialect=3;client library=fbembed.dll;user id=SYSDBA;password=masterkey"
keepConnection ="true"
commandText ="INSERT INTO logs (DT, LOG_TEXT, LEVEL_ID, CLASS, STACK_TRACE) values (@DT, @LOG_TEXT, @LEVEL_ID, @CLASS, @STACK_TRACE);" >
< parameter layout ="${longdate}" name ="@DT" />
< parameter layout ="${level}" name ="@LEVEL" />
< parameter layout ="${message}" name ="@LOG_TEXT" />
< parameter layout ="${logger}" name ="@CLASS" />
< parameter layout ="${stacktrace}" name ="@STACK_TRACE" />
</ target >
</ targets >
< rules >
< logger name ="*" minlevel ="Debug" writeTo ="db" final ="true" />
</ rules >
</ nlog >
* This source code was highlighted with Source Code Highlighter .
<? 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"
throwExceptions ="true"
internalLogFile ="file.txt">
< targets >
< target
xsi:type ="Database"
name ="db"
dbProvider ="FirebirdSql.Data.FirebirdClient.FbConnection, FirebirdSql.Data.FirebirdClient, Version=2.6.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"
useTransactions ="true"
connectionString ="server type=Embedded;initial catalog=FYT.FDB;character set=WIN1251;dialect=3;client library=fbembed.dll;user id=SYSDBA;password=masterkey"
keepConnection ="true"
commandText ="INSERT INTO logs (DT, LOG_TEXT, LEVEL_ID, CLASS, STACK_TRACE) values (@DT, @LOG_TEXT, @LEVEL_ID, @CLASS, @STACK_TRACE);" >
< parameter layout ="${longdate}" name ="@DT" />
< parameter layout ="${level}" name ="@LEVEL" />
< parameter layout ="${message}" name ="@LOG_TEXT" />
< parameter layout ="${logger}" name ="@CLASS" />
< parameter layout ="${stacktrace}" name ="@STACK_TRACE" />
</ target >
</ targets >
< rules >
< logger name ="*" minlevel ="Debug" writeTo ="db" final ="true" />
</ rules >
</ nlog >
* This source code was highlighted with Source Code Highlighter .
<? 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"
throwExceptions ="true"
internalLogFile ="file.txt">
< targets >
< target
xsi:type ="Database"
name ="db"
dbProvider ="FirebirdSql.Data.FirebirdClient.FbConnection, FirebirdSql.Data.FirebirdClient, Version=2.6.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"
useTransactions ="true"
connectionString ="server type=Embedded;initial catalog=FYT.FDB;character set=WIN1251;dialect=3;client library=fbembed.dll;user id=SYSDBA;password=masterkey"
keepConnection ="true"
commandText ="INSERT INTO logs (DT, LOG_TEXT, LEVEL_ID, CLASS, STACK_TRACE) values (@DT, @LOG_TEXT, @LEVEL_ID, @CLASS, @STACK_TRACE);" >
< parameter layout ="${longdate}" name ="@DT" />
< parameter layout ="${level}" name ="@LEVEL" />
< parameter layout ="${message}" name ="@LOG_TEXT" />
< parameter layout ="${logger}" name ="@CLASS" />
< parameter layout ="${stacktrace}" name ="@STACK_TRACE" />
</ target >
</ targets >
< rules >
< logger name ="*" minlevel ="Debug" writeTo ="db" final ="true" />
</ rules >
</ nlog >
* This source code was highlighted with Source Code Highlighter .
ご清聴ありがとうございました! 私の記事が、FireBirdデータベースにログシステムをセットアップするのに5時間を費やさないようにするのに役立つことを願っています!