問題タブ [adonetappender]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - カスタム データを含む log4net adonetappender、DataTime データが含まれているとログを書き込めません
カスタムデータを Db に記録する必要があり、このチュートリアルに従いました: http://stephenjamescode.blogspot.it/2014/01/logging-custom-objects-and-fields-with.html
ReflectionPatternConverter
必要なカスタム データをログに記録できるようにするを実装しました。これはコードです:
ReflectionPatternConverter
ReflectionPatternLayout
を登録する以外は何もしないカスタムを使用しReflectionPatternConverter
ます。
反射パターンレイアウト
このカスタム データ クラスをログに記録したい:
カスタムログデータ
だから私はこの設定ファイル(スニペット)でlog4netを設定しました:
ログエントリを書き込もうとすると、次の例外が発生します (log4net のデバッグモードを true に設定):
log4net:エラー [AdoNetAppender] エラー コード: GenericFailure。データベースへの書き込み中の例外 log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. データベースへの書き込み中の例外 System.FormatException: Can't convert parameter value from String do DateTime. ---> System.FormatException: 文字列は有効な日時として認識されませんでした....
(例外メッセージは異なる可能性があります。イタリア語から翻訳しました)。
面白いことに、現在のスレッド ロケールをCultureInfo.InvariantCulture
したがって、これは日時形式の愚かなロケールの問題であると強く思います。
クライアントのロケール設定からロギングを分離するにはどうすればよいですか?
c# - log4net を使用したカスタム AdoNetAppender で異なる ConnectionString を使用する
実行時に定義する ConnectionString を使用したいと考えています。多くの例を見つけましたが、機能させることはできません。
カスタム AdoNetAppender を作成しました。
私は次の構成を持っています:
私のロガーは、構成ファイルで次のように定義されています。
そして最後に、私のコードでロガーを取得するには、次のことを行っています。
接続文字列を構成に「ハードコード」しようとすると、機能します。しかし、いくつかの変数に応じて別の ConnectionString が必要なため、これを行うことはできません。カスタムアペンダーに入れたプロパティ ConnectionString は決して呼び出されません。私が何かを見逃している場所はありますか?
c# - AdoNetAppender 別のファイルから接続文字列の値を取得する
現在、log4net を使用して info\error メッセージをファイルに記録する複数の Web サービスがあります。ロギングをDBで行うようになりました。AdoNetAppender について読んだことがありますが、コマンド テキストや接続文字列などのいくつかのパラメーターを指定すると、簡単に実行できることがわかります。
しかし - 私の接続文字列はlog4netと同じweb.configにはありませんが、ディスクのconfig.iniから取得されます。そこから接続文字列の値を抽出するように AdoNetAppender を構成できますか?
前もって感謝します
visual-studio - ローカルでの実行時にインスタンス化されたアペンダーはありません
log4net を使用する Web アプリケーションがあります。私の Web アプリケーションは Azure にデプロイされ、そこで完全に動作します。ただし、VS2013 (アップデート 4) を介してローカルで実行すると、log4net はAdoNetAppender
.
スローされたすべての例外を中断して例外をチェックしましたが、何もスローされず、内部 log4net デバッグをアクティブにしましたが、デバッグ出力に例外は何も表示されませんでした。
また、何も追加<trust level="Full"/>
しませんでしたweb.config
...
これも Azure では機能しますが、ローカルでは機能しません。何か案は?ありがとう!
EDITこれが私のweb.config
ものです(関連する行のみ)
更新 2
適切に構成されていlog4net
ますが、呼び出すLogManager.GetLogger("...")
とアペンダーのないロガーが返されることがわかりました。AdoNetAppender
ただし、階層をさらに調べると、そこに自分が表示され、XmlConfigurator.Configure()
実行すると次のように出力されますlog4net: Adding appender named [ADONetAppender] to logger [root].
...
したがって、問題は、返されたオブジェクトにLogManager.GetLogger(...)
アペンダーが含まれていないことに要約されます (これはローカルでのみ発生し、本番環境では発生しません)。
解決した
以下の受け入れられた回答を参照してください。私が本当に欠けていたのはXmlConfigurator.Configure()
、私のApplication_Start
メソッドでの呼び出しだけだったことがわかりました。私が提供した他のすべての「証拠」は正常な動作であり、ローカルでログ メッセージが表示されなかった理由は、ローカル データベースと本番データベースの間のログ テーブル スキーマの意図しないわずかな違いでした。
c# - Log4Net エラー: 「構成セクション log4net が見つかりませんでした」 AdoNetAppender
テスト専用の新しいプロジェクトを作成しました。Log4Net
DBに書き込むために使用しようとしています。しかし、このエラーが発生しています。構成に何かが欠けていると思います。
AssemblyInfo.cs
Logging.config
Form1.cs
c# - log4net AdoNetAppender - SqlParameterCollection にパラメーターが含まれていません
私のプロジェクトの1つで、次のエラーが発生します。
アペンダー構成は次のとおりです(他のプロジェクトでは完全に機能します):
誰かがこの問題を抱えていたら、助けてくれて本当にありがとう