2016-04-03 33 views
2

私は毎日実行しているプログラムを持っています。私はそれを実行するたびにログを作成したいと思います。ここでは、ロギングを担当するコードのスニップは次のとおりです。WindowsタスクスケジューラとPythonロギングモジュール

logging.basicConfig(filename = 'log.txt', level = logging.DEBUG, format = '%(asctime)s - %(levelname)s - %(message)s') 

logging.debug('Start of program') # example logging 

すべてが完全に罰金限り、私はの.pyファイルまたは.BATファイル(ファイルエクスプローラでマウスをクリック)して起動として実行されます。残念ながら、私はそれをスケジュールに入れても、プログラムは正常に動作しますが、ログファイルは作成されません。

複数のスケジューラ設定を試しましたが、問題はスクリプトのコードにあるようです。

フィードバックありがとうございます!

+1

は、スクリプトを下に実行されるユーザーは、ログファイルの場所への権利を持っていますか?アクションの明示的な「開始」フォルダを指定しましたか?それらはPythonスクリプトをスケジュールするときに私が過去に持っていた2つの問題です。 – Oliver

+0

問題を解決しました:)ありがとうございます!私は場所の開始を指定した後、すべてが完璧にスムーズに進んでいます! –

答えて

2

解決策を回答として追加したかったのですが、これはやや一般的な問題のように思われます。過去の悲しみを引き起こしました。

Windowsタスクスケジューラから何かを実行するとき、そのプロセスの作業ディレクトリは、デフォルトでは実行可能ファイルのパスではなく、他のディレクトリです。例えば。あなたのスケジューラアクションがC:\sample.pyを呼び出すとき、これはC:\では実行されませんが、C:\Windows\system32(私の場合は)で実行されます。

あなたはこのようなこの

import os 

with open("C:\\cwd.txt", "w") as fh: 
    fh.write(os.getcwd()) 

またはこの

echo %cd% >> C:\cwd.txt 

として、いくつかのファイルにアクティブな作業ディレクトリを保存し、簡単なPythonの/バッチスクリプトを呼び出して、スケジュールされたタスクを追加することでこれを確認することができますあなたのプログラムに含まれる可能性のある相対的なパスを混乱させてしまいます。まだ私がまだピン止めできなかった微妙な問題がいくつかあります。

問題が明示的にあなたの行動のためのパス 'で開始]オプションを設定することで回避できます。 enter image description here

関連する問題