2016-04-03 10 views
2

Ich habe ein Programm, das täglich ausgeführt wird. Ich möchte für jeden Durchlauf ein Protokoll erstellt haben. Hier ist der Schnipsel von Code verantwortlich für die Protokollierung:Windows Task Scheduler und Python Logging Modul

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

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

Alles läuft völlig in Ordnung, solange ich es durch Py-Datei oder .bat Datei (Mausklick in Datei-Explorer) starten. Leider, wenn ich es auf den Zeitplan setze, läuft das Programm gut, aber die Protokolldatei wird nicht erstellt.

Ich habe versucht, mehrere Scheduler-Einstellungen, aber das Problem scheint im Code des Skripts gefunden werden.

Vielen Dank für Ihre Bewertung!

+1

Hat der Benutzer das Skript unter Rechte an der Protokolldatei haben wird ausgeführt:

Probleme können durch explizit auf die optionale ‚Start in‘ Pfad für die Aktion vermieden werden? Haben Sie einen expliziten "Start in" Ordner für die Aktion angegeben? Das sind zwei Probleme, die ich in der Vergangenheit bei der Planung von Python-Skripten hatte. – Oliver

+0

Problem gelöst :) Vielen Dank! Nachdem ich den Start in Location angegeben habe, läuft alles reibungslos! –

Antwort

2

Ich wollte die Lösung auch als Antwort hinzufügen, da dies ein etwas gewöhnliches Problem zu sein scheint, das mir in der Vergangenheit etwas Kummer bereitet hat.

Wenn etwas aus dem Windows-Taskplaner das Arbeitsverzeichnis dieses Prozesses nicht den Pfad der ausführbaren Datei ist standardmäßig ausgeführt wird, aber einige andere Verzeichnis. Z.B. Wenn Ihre Scheduler-Aktion C:\sample.py aufruft, wird dies in C:\ aber C:\Windows\system32 (in meinem Fall) nicht ausgeführt.

Sie können dies überprüfen, indem Sie eine geplante Aufgabe Hinzufügen einer einfachen Python/Batch-Skript aufrufen, die speichert die aktive Arbeitsverzeichnis zu einem gewissen Datei, wie diese

import os 

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

oder dieses

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

Diese verwirrt mit irgendwelchen relativen Wegen, die Ihr Programm enthalten könnte, und, ich vermute, es hat einige subtilere Probleme, die ich noch nicht festnageln konnte. enter image description here