私はこれを投稿し、それに答えています。これにより、非常に長い間困惑していました。 web.config
に次の行があります:
<aspNetCore processPath="dotnet" arguments=".\XXX.Server.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
どうやら、これはlogs\stdout
にログを記録するはずですが、私が見ると、何もありません。私は野生のガチョウの追跡に行き、「ログ」(あまりにも多くを返した)または「stdout」(何も返さなかった)という名前のものをディスク全体で検索しましたが、それでもそれを理解できませんでした。
おそらく、マシンのイベントビューア->アプリケーションをチェックして、ログにエラーが記録されているかどうかを確認できます。これにより、ログファイルが生成されない理由を説明できます。
ただし、最も可能性の高い理由は、IISにそのログフォルダーへの書き込み権限がないことです。
ログフォルダーが存在することを確認する必要があります! IISはあなたのためにそれを作りません。この腹立たしい問題に対するそのような簡単な解決策。
Logsフォルダーを作成しましたが、まだ何も記録されていません。 home/logfilesの下にある既存のフォルダーを使用し、フォルダーを作成せずに機能させることができることがわかりました。 このソリューションは私のためにそのまま働いた:
1)公開アプリケーションのルートフォルダーに作成されたweb.configファイルを開きます。
2)stdoutlogEnabledをtrueに設定し、stdoutLogFileを\?\%home%\ LogFiles\stdoutのように設定します。
<aspNetCore processPath="dotnet" arguments=".\SellCarsHereV2.dll" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
次に、そのパスに移動してファイルをダウンロードするか、Azureポータル(Azureでホストされている場合)を使用します。 Azure Portalを使用している場合:
1)アプリサービスに移動します。
2)https:// {アプリサービス} .scm.azurewebsites.net /にアクセスする高度なツールに移動します
3)[デバッグコンソール]メニュー-> CMDをクリックします
4)LogFilesをクリックします
5)stdout _ *。logというファイルが表示され、鉛筆をクリックして表示できます。必要に応じてファイルをダウンロードすることもできます。
web.configファイルで提供されているstdoutLogFile=".\logs\stdout"
に従って、logs
ディレクトリがWebの横に作成されます。 config、内部 公開ディレクトリ 。
logs
サブディレクトリを作成するには、 ASP.NET Coreディレクトリ構造 で説明されているアプローチを使用できます。
これを公開プロジェクトの*.csproj
ファイルの最後に貼り付けてください
<Project>
...
<Target Name="CreateLogsFolder" AfterTargets="Publish">
<MakeDir Directories="$(PublishDir)logs"
Condition="!Exists('$(PublishDir)logs')" />
</Target>
</Project>
この変更後の公開プロセス中に、出力ディレクトリにlogs
ディレクトリが存在しない場合は作成する必要があります。
たとえばdotnet publish --output <path_to_your_publish_folder>
を実行すると、<path_to_your_publish_folder>
内にlogs
ディレクトリが見つかります。
ログを取得するために、次の手順を実行しました。
IIS_IUSRS
への書き込みアクセスを許可しますweb.config
に絶対パスを設定:stdoutLogFile="C:\xxx\xxx\logs"
ステップ2は相対パスでも機能しますstdoutLogFile=".\logs\stdout"