C#で書かれたライブラリで、さまざまな操作を行い、ログにはNLog
を使用しています。現在のところ、GUIと一緒に使用してGUIを操作するには、WinForms
が問題なく動作します。NLogが遅くなり、ASP.net MVCアプリケーションが破損する
古いWinForms
を置き換える新しいWebベースのインターフェイスを開発するように求められました。私はASP.net MVC5
を選択しました。
問題は、私は私のASP.netアプリケーションの休憩、NLog
を使って何かをログに記録し、ライブラリから任意のメソッドを呼び出すときということです:ページ間のロード時間は、(非常に長くなる(〜30秒程度)と、すべてのステータスが失われますTempData
およびViewData
の辞書は空になります)。
しかし、私がそのメソッドでNLog
へのすべての呼び出しをコメントした後、私はライブラリから同じ正確なメソッドを呼び出すと、すべてがスムーズに行く!
どうしてですか? NLog
が私のASP.net MVCアプリを殺すのはなぜですか?
- 私はアプリが遅くなり、ログの数千人をやっていないよ。急いで明白提案を書く前
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target name="logfile" xsi:type="File" fileName="logs\Service.log" keepFileOpen="false" layout="${longdate} ${level} ${message} ${exception:format=tostring}" archiveFileName="logs\Service.{#}.log" archiveEvery="Day" archiveNumbering="Rolling" maxArchiveFiles="30" /> </targets> <rules> <logger name="*" minlevel="Info" writeTo="logfile" /> </rules> </nlog>
重要事項: ここNLog構成です。我々は 最高15-20ログコールについて話しています
- これは、ファイルにロギングするときにのみ発生します。例えば、私はXSI使用してネットワークにログオンしている場合:タイプ=を「NLogViewerは、」この問題は、私はここにベースディレクトリを見つけ、その完全なパスが間違っていると問題があると思い
ロギングフォルダにアクセス権の問題がありますか?それはどこにホストされていますか? I/Oで何が行われているかを見るために、sysinternalsのProcessMon(またはdiskmonまたはfilemon)のようなものを使用しましたか?あなたのログステートメントをどのように構築していますか?ログに文字列連結を使用して大きな文字列を書いていますか?ログに記録されずに処理されている文字列形式のデバッグレベルログをたくさん使用していますか?プロファイリングツールを使用してスローダウンされている場所やVSに組み込まれている場所を確認するためにWebアプリケーションをプロファイルしましたか? – Igor
要するに、**あなたの調査作業をもっとやるか、もっと多くの情報を提供する必要があります。誰もあなたが答えを出すことができますが、それは最高に推測されるので与えられたものではありません。 – Igor
https://github.com/nlog/NLog/wiki/BufferingWrapper-targetを試したことがあります – Fildor