Je poste ceci et y répond, car cela m'a laissé perplexe pendant très longtemps. J'ai la ligne suivante dans mon web.config
:
<aspNetCore processPath="dotnet" arguments=".\XXX.Server.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
Donc, apparemment, cela devrait se connecter à logs\stdout
, mais quand je regarde, il n'y a rien. J'ai fait une chasse aux oies sauvages, cherchant sur tout le disque tout ce qui s'appelait 'log' (qui retournait trop) ou 'stdout' (qui ne retournait rien), et je n'arrivais toujours pas à le comprendre.
Vous pouvez probablement vérifier l'Observateur d'événements sur votre machine -> Application pour voir s'il y a des erreurs enregistrées, ce qui pourrait expliquer pourquoi vos fichiers journaux ne sont pas générés.
Cependant, la raison la plus probable est que IIS n'a pas l'autorisation d'écrire dans ce dossier de journal.
Vous devez vous assurer que le dossier du journal existe! IIS ne le fera pas pour vous. Une solution aussi simple à ce problème exaspérant.
J'ai créé le dossier des journaux mais toujours rien n'a été enregistré. J'ai découvert que vous pouvez utiliser un dossier existant sous home/logfiles et le faire fonctionner sans créer de dossier. Cette solution a fonctionné pour moi telle quelle:
1) Ouvrez le fichier web.config créé dans le dossier racine de l'application publiée.
2) Définissez stdoutlogEnabled sur true et stdoutLogFile sur \? \% Home%\LogFiles\stdout comme ceci:
<aspNetCore processPath="dotnet" arguments=".\SellCarsHereV2.dll" stdoutLogEnabled="true" stdoutLogFile="\\?\%home%\LogFiles\stdout" />
Vous pouvez ensuite accéder à ce chemin et télécharger les fichiers ou utiliser le portail Azure (s'il est hébergé dans Azure). Si vous utilisez le portail Azure:
1) Accédez au service d'application.
2) Allez dans Outils avancés qui vous amène à https: // {votre service d'application} .scm.azurewebsites.net /
3) Cliquez sur le menu Debug Console -> CMD
4) Cliquez sur LogFiles
5) Vous verrez un fichier appelé stdout _ *. Log et vous pouvez cliquer sur le crayon pour le voir. Vous pouvez également télécharger le fichier si vous le souhaitez.
Selon le stdoutLogFile=".\logs\stdout"
Fourni dans votre fichier web.config , le répertoire logs
doit être créé à côté du Web .config, à l'intérieur le répertoire de publication .
Pour créer le sous-répertoire logs
, vous pouvez utiliser l'approche décrite dans structure de répertoires ASP.NET Core .
Collez-le à la fin du fichier *.csproj
De votre projet publié
<Project>
...
<Target Name="CreateLogsFolder" AfterTargets="Publish">
<MakeDir Directories="$(PublishDir)logs"
Condition="!Exists('$(PublishDir)logs')" />
</Target>
</Project>
Pendant le processus de publication après cette modification, le répertoire logs
doit être créé s'il n'existe pas dans le répertoire de sortie.
Si vous exécutez par exemple: dotnet publish --output <path_to_your_publish_folder>
Vous devriez trouver le répertoire logs
à l'intérieur du <path_to_your_publish_folder>
J'ai fait les étapes suivantes afin d'obtenir des journaux:
IIS_IUSRS
comme décrit ci-dessusweb.config
: stdoutLogFile="C:\xxx\xxx\logs"
L'étape 2 fonctionne également avec un chemin relatif stdoutLogFile=".\logs\stdout"