問題タブ [eventlog-source]
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.
wix - WiX を使用してイベント ログ ソースを作成する方法
カスタム イベント ログ ソースを使用する Web サイト用のインストーラーを作成しています。WiX ベースのインストーラーが、インストール中にそのイベント ログ ソースを作成することを希望します。
WiX フレームワークを使用してこれを行う最善の方法を知っている人はいますか?
c# - .Net サービスのインストール中にカスタム イベント ログとイベント ソースを作成する最も信頼できる方法は何ですか?
.Net Windows サービスのインストール中に、イベント ソースを確実に作成/削除することが困難です。
ProjectInstaller クラスのコードは次のとおりです。
参照されているファサード メソッドは、ログ、サービスなどの名前の文字列を返すだけです。
このコードはほとんどの場合機能しますが、最近インストールした後、ログ エントリがカスタム ログではなくアプリケーション ログに表示されるようになりました。また、次のエラーもログに記録されています。
ソース ( AutoCheckout ) のイベント ID ( 0 ) の説明が見つかりません。ローカル コンピュータに、リモート コンピュータからのメッセージを表示するために必要なレジストリ情報またはメッセージ DLL ファイルがない可能性があります。/AUXSOURCE= フラグを使用して、この説明を取得できる場合があります。詳細については、ヘルプとサポートを参照してください。
何らかの理由で、アンインストール中にソースが適切に削除されていないか、インストール中にソースが作成されていません。
ここでのベスト プラクティスに関するヘルプは大歓迎です。
ありがとう!
さらに、ログに例外を書き込む方法のサンプルを次に示します。
stephbu の回答について:推奨されるパスは、インストーラー スクリプトと installutil、または Windows セットアップ ルーチンです。
サービスのインストールを実行し、ログを設定するセットアップ プロジェクトを使用しています。installutil.exe を使用するか、Windows セットアップ プロジェクトを使用するかに関係なく、どちらも上に示した同じ ProjectInstaller クラスを呼び出すと思います。
再起動するまでログが完全に削除されない場合、テスト マシンの状態がどのようにエラーを引き起こしているかがわかります。それが問題を解決するかどうかを確認するために、さらに実験します。
編集: サービスのインストール中にソースとログ名を登録する確実な方法に興味があります。そのため、サービスが以前にインストールされていた場合は、ソースが削除されるか、以降のインストール時にソースが再利用されます。
そのルートを試すために WiX を学ぶ機会はまだありません。
event-log - EventMessageFile なしで Windows イベント ログを読み取る方法は?
Windows イベント ログを読み取るコードがあります。OpenEventLog、ReadEventLog を使用して、イベント ソースとイベント ID を取得します。次に、以下のソースを検索します。
キーを使用して、リストされている内容に従って適切な DLL をロードしEventMessageFile
、最後に を使用FormatMessage
してイベント文字列をメッセージ DLL コンテンツとマージし、最終的なイベント メッセージ テキストを取得します。これは推奨される方法であり、少し面倒ですが、うまく機能します。
まで...ソースを調べてみると、EventMessageFile
ではなく、ProvideGuid
エントリがあることがわかりました。これは新しい方法のようです (Vista と Windows 2008 で表示されます)。うーん -- メッセージ テキストを検索し、データ文字列をマージするために FormatMessage に渡すものは何もありません
:(
レジストリで GUID を検索すると、他のファイル (HTTP ソースの場合は http.sys) への参照につながりますが、完全なメッセージ テキストを取得することはできません。EvtOpenSession
これらのAPIを使用する必要がありますか? EVENTLOGRECORD*
への呼び出しからReadEventLog
、およびサポートされていない Windows 2003 でソフトウェアを実行する必要があるという事実EvtOpenSession
(Vista および Windows 2008 でのみ使用可能) があるので、そうしないことを望んでいます。注: Vista の一部のソースには ProviderGUID があり、その他のソースには EventMessageFile があるため、古い方法も引き続き実行できます。
したがって、私が求めているのは、ProviderGuid を見て、完全なイベント ログ メッセージ テキストを表示するために FormatMessage に渡す必要がある DLL を取得する方法です。
ご意見ありがとうございます
asp.net - いつでも書き込み可能なイベント ログ ソースですか?
ASP.NET Web アプリケーションで常に書き込み可能なイベント ログ ソースはありますか?
誰かが一見無関係な解決策を持っている場合の裏話:
ASP.NET webapp は独自のイベント ログ ソースを使用しますが、それを作成する権限がありません。そのため、webapp がエントリを書き込もうとしたときにイベント ログ ソースが存在しない場合 (インストール手順では、管理者がイベント ログ ソースを手動で登録するように指示されていますが……)、webapp は何も入力しません。問題が発生した場合のイベント ログ。
イベントログを見ている人に通知するために使用できる別の(アプリに依存しない)ソースがあることを願っています。
c# - 1つのソースのアプリケーションイベントログからすべてのイベントを削除するにはどうすればよいですか?
アプリケーションイベントログを使用して、プログラムで発生しているアクティビティに関するメッセージを書き込んでいます。ソースをアプリの名前に設定しました。私のプログラムに関連するイベントだけをクリアする機能をユーザーに提供したいと思います。これは可能ですか?ログ全体をクリアする方法しかわかりません。
.NET 2.0でc#を使用しています。
iis - Windows 2003 Server でソース {0} のログを開けません
サーバーのイベントログに大きな問題があります。そうですね、まずはセットアップの説明をさせてください。
- 2台のコンピューターでドメインをセットアップしています
- 1 台のコンピューターは IIS を実行しており、もう 1 台はワークステーションです。IIS は Win2k3 ワークステーション Win XP を実行しています。
- IIS コンピューターは、Windows 偽装を使用する Web サイトをホストしており、 MyAppと呼ばれるカスタム ログ ファイルとカスタム イベント ソースMySourceのイベント ログにエントリを記録しようとしています。
- Domain Users のメンバーである MyUser というドメイン ユーザーがいます。
- ログインしたユーザーをページに正常に書き出せるため、シングル サインオンは 100% 機能しています。
ワークステーションから IIS ページにアクセスすると、次のいずれかのメッセージが表示されます (最初のメッセージが表示される場合と 2 番目のメッセージが表示される場合があります)。
したがって、これを修正するために、次のすべてを試しました。
Everyone ユーザーに C:\windows\system32\config\MyApp.evt ファイルへの FullControl を付与
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog への FullControl を全員のユーザーに付与
キー HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\MyApp\CustomSD に、次の文字列 (A;;0x0002;;;AU) を追加しました (この理由は、ここで読むことができますhttp://fgheysels.blogspot.com /2008/01/cannot-open-log-for-source-0-on-windows.html )
私は今、これを修正する方法について完全に考えていません。他の誰かがこれに遭遇し、何か他のことを試しましたか?
wix - WIX: .NET メッセージ ファイルを使用して EventSource を作成する
WIX を使用してアプリケーションのインストーラーを作成しています。これまでのところ、すべて正常に動作しています。しかし、インストール中に新しいイベント ソースを作成しようとしていますが、期待どおりに動作しません。
SO でこの質問を読んで理解しましたが、特定のソリューションが適切に機能していないように見える状況が多少異なります。以下は別の方法で行われます。
- を使用して
WixNetFxExtension
、起動条件として .NET 3.5 がインストールされているかどうかを判断しています。 - here
WixUtilExtension
で説明されているように、32ビット/64ビットビルド用に構成するために を使用しています
私がやりたいのは、32 ビット インストールを行うときは 32 ビット フレームワークのイベント メッセージ ファイルを使用し、それ以外の場合は 64 ビット フレームワークのイベント メッセージ ファイルを使用することです。
上記のリンクされた SO の質問のコメントの 1 つは、次を使用して、システムに 32 ビット フレームワークのイベント メッセージ ファイルを使用させることを提案しています。
両方のタイプのセットアップを説明するためにこれを変更しました。
ファイルの先頭では、同じ<?if ...
条件が機能し、それに応じて製品名とフォルダー名が変更されます。
そのコードの上のいくつかの行では、.NET Framework の検出を可能にするために次を使用しています。
インストーラーを実行すると、すべてが機能しているように見え、イベント ソースも作成されます。アプリケーションからも使用できますが、イベント メッセージ ファイルが見つからないという情報が引き続き表示されます。レジストリを調べると、メッセージ ファイルへのパスが見つからないことがわかりました。
32 ビット/64 ビット フレームワークへのパスも存在することを期待していますが、先頭に追加されていないようです。
ここで何が間違っていますか?
.net - このASP.NETイベントログソースが常に登録されていることを期待できますか?
未処理の例外により、ASP.NETベースのアプリケーションが.NET Framework 2.0で予期せず終了するため、次の規則で指定されたイベントログソースは、.NETFrameworkがインストールされているすべてのボックスに常に登録されると思います。
「ASP.NETXYZ0」
ここで、X、Y、およびZは、.NETランタイムからのメジャー、マイナー、およびビルド番号です。
.NET Frameworkをインストールすると、常にこのイベントログソースが作成されると想定しても安全ですか?
.net - WindowsイベントID
アプリケーション開発者のために予約されているWindowsのイベントIDの特定の範囲はありますか?
Windowsイベントログにエラーを書き込む.Netアプリケーションに取り組んでいます。このアプリケーションは実際にはサーバーを対象としており、可能な限りロックダウンしたい(特権を減らしたメンテナンスアカウントでの実行を含む)妄想的なシステム管理者によってスケジュールされたタスクとして実行されます。アプリは正式にインストールされません—実際、私はこのためのインストーラーを構築していません。.exeファイルとapp.configファイルを含むzipファイルだけです。
秘訣は次のとおりです。Windowsでは、アプリケーションイベントログにソースを作成するには、管理者権限が必要です。私はこれを当てにすることができず、過労のシステム管理者が作成する必要がないようにするため、フォールバックとして「アプリケーションエラー」(MSOfficeで使用)を使用しています。(Officeはサーバーにインストールされることが少ないため、より適切なフォールバックを選択することが私のToDoリストにあります)。
問題は、Officeになりすますだけでなく、イベントを少し目立たせたいということです。このようにして、私のシステム管理者は、イベントビューアまたは選択したログアグリゲータでそれらのイベントだけに簡単にフィルタリングできます。私が今知っている最善の解決策はイベントIDを使用することですが、特にターゲットオーディエンスを考慮すると、内部のWindowsイベントとの競合が心配です。
調べましたが、これに関するドキュメントが見つかりません。それで、私が使用すべき特定の範囲のイベントIDはありますか、それとも何でも使用できますか、それともここで完全に異なるオプションを検討する必要がありますか?
visual-studio - Windowsサービスとイベントログのセットアッププロジェクト
Windowsサービスをインストールするセットアッププロジェクトを入手しました。
winserviceプロジェクトで使用する必要があるカスタムログにイベントログソースを登録しています(方法と理由は重要ではありません)。
私の問題は、セットアッププロジェクトがデフォルトでイベントログソースを作成しようとすることです。そうすることで、エラーメッセージ("Error 1001" source XXX already exists on local computer
)が表示され、ロールバックされます。
どこを見ても、どこで登録が行われているのか、どうすればオフにできるのかわかりません。
Windowsサービスまたはセットアッププロジェクトにイベントログソースを作成しないように強制するにはどうすればよいですか?