5

Web アプリを Azure にプッシュしました。私のコンピューターでは機能しましたが、Azure では機能しませんでした。それをデバッグするために、アプリが Azure に出力したものを読みたいと思います。Azure のログを表示するにはどうすればよいですか?

それが Heroku だったら、私は実行しますheroku logs

Azure の「ポータル」で URL を見つけました Azure の「ポータル」で URL を見つけました 'FTP DIAGNOSTIC LOGS' ftp://waws-prod-db3-003.ftp.azurewebsites.windows.net/LogFilesが見つかりませんでしたそれに接続することを管理します。私たちのプロキシ オフィス ファイアウォールが ftp をブロックしていると思います。


私は試した

azure site log tail

しかし、意味のないエラーメッセージが表示されます

エラー: 禁止されています

4

2 に答える 2

2

Windows Azure Web サイトのログ ストリーミングはD:/home/logfiles、Web サイトのディレクトリ内の任意のテキスト ファイルに書き込まれた情報をストリーミングします。したがって、要件は、アプリケーションがそのログ ファイルをこのディレクトリに書き込むことです。ストリーミング サポートはかなり一般的で、LogFiles フォルダーにある任意のテキスト ファイルをストリーミングできます。しかし、それが機能するためには、ファイルが読み取り可能である必要があるため、排他的に開いていると機能しません。

Python では、アプリケーションの複数のインスタンスが同時に実行される可能性があるため、ファイルのロックが問題になる可能性があることを考えると、これを行うのは少し難しい場合があります。

これを回避するには、ログ ファイルへの同時書き込みアクセスを許可するConcurrentLogHandlerを使用します。これにはpywin32 (Python for Windows 拡張機能) が必要ですが、これは既定では Windows Azure Web サイトにインストールされないため、アプリケーションと共にその依存関係を含める必要があります。Windows Azure Web サイトで使用される Python ランタイムの適切なバージョン (現時点では Python 2.7 32 ビット) を含めるようにしてください。

DjangoWAWSLoggingサンプル プロジェクトは、その方法を示しています。settings.pyviews.pyを参照してください。プロジェクトのREADMEで説明されているように、現時点では、ログは Web サイトが停止している場合にのみダウンロードできます。これはおそらく、ConcurrentLogHandler がファイルを排他モードで開いていることが原因です。この質問を参照してください。

このフラグメントは、環境変数をファイル名としてsettings.py使用して、ログ ハンドラーを構成します。LOGFILE

'ConcurrentLogHandler':{
    'level': 'DEBUG',
    'class': 'cloghandler.ConcurrentRotatingFileHandler',
    'formatter': 'verbose',
    'filename': os.getenv('LOGFILE', 'django.log')
},

ログ ストリーミングでは複数のファイルを同時に処理できるため、次のように、各 Web サイト インスタンスのログを別のファイルに記録することをお勧めします。

'handlers': {
    'logfile': {
        'level':'DEBUG',
        'class':'logging.handlers.RotatingFileHandler',
        'filename': os.path.join(os.getenv('LOGPATH', "."), str(uuid.uuid1()) + ".log"),
        'maxBytes': 1024 * 1024,
        'backupCount': 9,
        'formatter': 'standard',
    },
},

LOGPATH は、Windows Azure Web サイトで "D:\home\logfiles" として構成された環境変数です。

おそらく、Python のドキュメンテーションによると、Windows では「ロギングによりファイルが排他ロックで開かれる」ためです。

于 2013-07-27T12:48:49.900 に答える
0

ポータルから、作成した VM のログ診断を有効にする必要があります。これにより、ポータル自体からログを読み取ることができるようになります。

于 2016-02-24T16:28:05.030 に答える