問題タブ [mdc]

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.

0 投票する
2 に答える
3535 参照

log4j - Log4j SyslogAppender は MDC と NDC をサポートしていますか

簡単に言うと、Log4j SyslogAppender は、出力が構造化データであるという意味で MDC と NDC をサポートしていますか。つまり、プロトコルの構造化データ機能を使用していますか?

さらに、MDC に入れ、ログに正常に追加できるものに制限はありますか?

0 投票する
2 に答える
3633 参照

java - Log4j 動的パラメーター

spring フレームワークで実行され、ログに log4j を使用する j2ee Web アプリケーションがあります。log4j.properties ファイルにこの行があります。これにより、ログがデータベースに挿入されます。現在ログインしているユーザーを何らかの方法で追加できるように、メッセージ部分に動的な値を設定するにはどうすればよいですか。現在のユーザーの情報を含む Bean オブジェクトは、アプリケーション コンテキストにあります。

log4j.appender.dbLog.sql = INSERT INTO LOGGING (log_date, log_level, location, message) VALUES ('%d{yyyy/MM/dd HH:mm:ss}', '%-5p', '%C-% L', '%m')

0 投票する
1 に答える
5661 参照

security - GPGメッセージを復号化するときのmdcエラー

スケジュールされたタスクを定期的に実行し、gpgによって暗号化されたxmlファイルを介して通信するクライアントおよびサーバーシステムがあります。必要なすべての公開鍵がクライアントとサーバー間で正常に交換されました。暗号化と復号化の呼び出しは、バッチファイルから実行されています。

構文を暗号化する

gpg.exe --batch --yes --recipient%1 --output%4 --passphrase%5 --local-user%2 --sign --encrypt%3

構文の復号化

gpg.exe --batch --yes --output%3 --passphrase%4 --decrypt%2 2>%1

クライアントはxmlファイルを作成し、サーバーの公開鍵を使用してgpgで暗号化し、秘密鍵で署名して、サーバーのftpサイトにアップロードします。サーバーは、ftpフォルダー内の新しいファイルを定期的にチェックします。新しいファイルの場合、gpgを使用して復号化し、ファイル内のxmlを処理します。

サーバーが復号化しようとするいくつかのxmlファイルについて、次のようなエラーが表示されます。

gpg:block_filter 00AA8400:読み取りエラー(サイズ= 7841、a->サイズ= 395)

gpg:無効なエンコーディングのmdc_packet

gpg:復号化に失敗しました:無効なパケット

gpg:block_filter:保留中のバイト!

注意すべき点は、これはすべてのファイルで発生しているのではなく、一部のファイルでのみ発生しているということです。失敗したファイル間の共通点を見つけることができませんでした。

このエラーの意味を知っている人はいますか?これを追跡するのに役立つ提案は大歓迎です。

0 投票する
1 に答える
544 参照

log4j - MDC を使用した perf4J

perf4J が log4j MDC をサポートしているかどうかは誰にもわかりません。すべてのログ ステートメントに MDC 値が追加されていますが、perf4J ログ ステートメントには MDC 値が表示されません。

以下を参照してください。[TimingLogger] ログ ステートメントの最後にも MDCMappedValue が表示されることを期待しています。

18:35:48,038 INFO [LoginAction] ユーザー kermit をアプリケーションにログイン中 - MDCMappedValue 18:35:48,749 INFO [PostAuthenticationHandler] doPostAuthenticate() を開始しました - MDCMappedValue 18:36:03,653 INFO [PostAuthenticationHandler] kermit 用にロードされたプロファイル - MDCMappedValue 18:36 :08,224 INFO [TimingLogger] start[1300905347914] time[20310] tag[HTTP.Success] message[/csa/login.seam] -
18:36:09,142 INFO [TimingLogger] start[1300905368240] time[902] tag[HTTP .Success] メッセージ[/csa/home.seam] -

0 投票する
8 に答える
80476 参照

java - スレッドプールで MDC を使用するには?

私たちのソフトウェアでは、 MDCを広範囲に使用して、Web リクエストのセッション ID やユーザー名などを追跡しています。これは、元のスレッドで実行している間は正常に機能します。

ただし、バックグラウンドで処理する必要があるものがたくさんあります。そのために、いくつかの自己ロール型非同期実行サービスとともにjava.concurrent.ThreadPoolExecutorおよびクラスを使用します。これらのサービスはすべて、独自のスレッド プールを管理します。java.util.Timer

このような環境で MDC を使用することについて、Logback のマニュアルには次のように書かれています。

マップされた診断コンテキストのコピーは、開始スレッドからワーカー スレッドに常に継承できるとは限りません。これは、スレッド管理に java.util.concurrent.Executors が使用されている場合です。たとえば、newCachedThreadPool メソッドは ThreadPoolExecutor を作成し、他のスレッド プーリング コードと同様に、複雑なスレッド作成ロジックを備えています。

このような場合、タスクをエグゼキュータに送信する前に、元の (マスター) スレッドで MDC.getCopyOfContextMap() を呼び出すことをお勧めします。タスクが実行されると、最初のアクションとして MDC.setContextMapValues() を呼び出して、元の MDC 値の格納されたコピーを新しい Executor 管理スレッドに関連付ける必要があります。

これは問題ありませんが、これらの呼び出しを追加することを非常に忘れがちであり、手遅れになるまで問題を認識する簡単な方法はありません。Log4j の唯一の兆候は、ログに MDC 情報がないことです。Logback を使用すると、古い MDC 情報が得られます (トレッド プールのスレッドは、最初に実行されたタスクから MDC を継承するため)。どちらも本番システムでは深刻な問題です。

私たちの状況が特別だとは思いませんが、この問題についてはウェブ上であまり見つけることができませんでした。どうやら、これは多くの人がぶつかるものではないので、回避する方法があるはずです。ここで何が間違っていますか?

0 投票する
1 に答える
201 参照

firefox - Firefox 拡張機能のデバッグ時に構文エラーを検出する方法

大規模な Firefox プラグインで作業しているときに、エディターでキャッチされない構文エラーが誤って発生することがあります。これが発生すると、次の呼び出し

ファイル内のどこで構文エラーを探すべきかについての役立つヒントがなくても、単にインポートに失敗したり、何かを返したりするだけです。インポートが失敗したときに Firefox に何らかの手がかりを与える方法はありますか?

編集:navigator私は自分の問題を修正しました。それは、オブジェクトへのグローバル参照を持つコードを使用していたことが判明しました。これが特に厄介だったのは、コードがブラウザーにロードされたときに機能することでした (Wladimir が以下で提案したように) が、拡張機能にインポートするときにまだ失敗します。

最終的には、一種の手動バイナリ検索に頼ることにしました。ファイルの半分を削除してから、インポートがまだ失敗するかどうかを確認します。もしそうなら、残りの半分を削除して繰り返します。失敗しなくなるとすぐに、問題がどこにあるかをより正確に把握できるようになりました。これにより、バイナリ検索を続行するか、より小さな領域を手動でスキャンして問題を探すことができました。

これには非常に時間がかかりますが、このデバッグ プロセスを高速化する方法についてご提案いただければ幸いです。

0 投票する
1 に答える
6057 参照

spring-mvc - Web リクエスト全体の MDC にユーザー名を挿入する方法

マップされた診断コンテキストを使用して、ページ要求を行っているユーザーのユーザー名を関連するすべてのログ ステートメントに追加しようとしています。ただし、成功せずに機能させるために3つの異なる方法を試しました。

  1. ログイン後にユーザー名を MDC にプッシュし、ログアウト後に削除します。このメソッドは、どのログ ステートメントがどのユーザーからのものかを混同してしまいます。
  2. ServletFilter を使用して、各ページの読み込み時にユーザー名を MDC にプッシュし、リクエストが終了するとポップします。これはデータの一部のみをキャッチし、Spring セキュリティ レイヤーでのみキャッチします。
  3. すべての Controller メソッドの前で AOP @Around インターセプターを使用してもうまくいきませんでした。

これを実現する方法について何か提案はありますか?

0 投票する
1 に答える
223 参照

firefox - mar file generation in MDC

I am trying to generate complete.mar file, in firefox build. when I try to generate complete.mar file, the following error occurs.

Sathi@HREF-22F4E8F33B /c/href/FF-5.1/tools/update-packaging $ sh make_full_update.sh complete.mar new /c/href/FF-5.1/tools/update-packaging/new /c/href/FF-5.1/tools/update-packaging precomplete file is missing!

0 投票する
4 に答える
14006 参照

java - log4jでMDCを使用して、ログファイルに動的に名前を付ける

実行時にMDCを使用してログファイルに名前を付ける方法はありますか?

tomcatdocbaseを使用して同時に異なる名前で呼び出されている単一のWebアプリケーションがあります。したがって、それぞれに個別のログファイルを用意する必要があります。

0 投票する
0 に答える
1788 参照

java - Java MDC ミキシング セッション データ

ロギング フレームワークとして Log4j を使用しています。私はMDCを使用してアプリケーション全体でいくつかの値を保持しているので、最終的にログに記録してイベントヘルパー内の値を取得できます。しかし、サーバーのエラー/例外ログの場合、他のセッション値が混同されていることに気付きました。

DeptId のように、ログに記録する必要があるものは存在しませんが、他はログに記録されます。

MDC はスレッドセーフではありませんか? これに対する解決策はありますか?