Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Habe mir eine Logger Klasse(die getrennte Dateien erzeugen kann) geschustert.
Aber zu meiem Problem: Die erzeugten Dateien sind immer im ANSI Format codiert. Geht es überhaupt, dass der logger UTF-8 Dateien erzeugt?
@harryberlin: Wie hast Du das denn überprüft? Bei dem gezeigten Quelltext wird ja nur ASCII in die Datei geschrieben, das ist sowohl ”ANSI” als auch UTF-8, und noch ein Haufen anderer Kodierungen die ASCII als Untermenge haben.
Es gibt kein ANSI Encoding bzw. ist der Begriff nicht klar definiert. Was allerdings klar ist dass alles was du loggst in ASCII repräsentierbar ist. ASCII ist ein Subset von vielen Encodings, unter anderem UTF-8. Du kannst also gar nicht wissen ob es UTF-8 ist oder ein anderes Encoding.
Von dem eigentlichen Problem abgesehen ist dass was du da machst mehr als fragwürdig. Zum einen entspricht dass nicht dem wie man Logging benutzen sollte, zum anderen schränkst du die Fähigkeiten von logging extrem und vollkommen unnötig auf ein fragwürdiges Minimum ein. Den Logger nach der aktuellen Zeit zu benennen ist darüberhinaus einfach nur absurd.
ich möchte gleichzeitig in zwei oder sogar noch mehr dateien unterschiedliche texte loggen können.
da kam mir die benennung nach zeit als einfachste lösung. weil diese eigentlich nie gleich ist. zur not muss eben noch eine ms sleep rein.
@harryberlin: wenn Du unterschiedliche Texte loggen möchtest, dann nenn sie doch nach dem, was sie unterscheiden. So funktioniert aber logging nicht. Üblicherweise will man ja alles in einer Datei haben, und sortiert bei Bedarf nach Kategorien. Es ist nicht möglich, immer das richtige Encoding zu erraten. Und das Programm, dessen Screenshot Du da zeigst, ist auch noch sehr primitiv, nicht nur, was das Erkennen von Encodings angeht.
@harryberlin: Natürlich kann man den BOM auch in UTF8 kodieren, aber er macht in UTF8 nicht wirklich Sinn weil es dort das Problem was damit gelöst werden soll gar nicht gibt. Warum willst Du den Unsinn da drin haben? Das macht am Ende nur Ärger wenn Du irgendwelche Software verwendest die damit nichts anfangen kann und/oder es nicht heraus filtert. Das bei UTF8 als Kodierungshinweis zu verwenden ist halbgar, denn letztendlich gilt bei Kodierungen immer das man nicht raten sondern wissen sollte. Aber hey, es geht ja wahrscheinlich um Windows. Mach was Du willst.
@harryberlin: Du öffnest die Datei halt unter Windows falsch (mit dem falschen Editor). Die Logger-Klasse ist nicht wirklich eine Klasse, da sie nur einen Logger konfiguriert, das wäre besser eine Funktion. Eine Variable filefullpath für einen relative Pfadangabe zu nehmen, ist irreführend. strftime für einen konstanten String unsinnig.
@blackjack
in wordpad besteht das selbe problem. mit dem falsch dargestellten zeichen.
@sirius3
ja du hast recht, für das beispiel hier, ist der relative pfad nicht wirklich ein fullpath.
habs schon auf os.path.join() angepasst. bin dann selbst drauf gekommen, dass es schwachsinn war.
anders als mit der klasse kann ich doch sonst keine instanzen erzeugen.
was sollte ich an einem logfile denn editieren wollen?
vllt. verstehe ich es auch falsch. ein log ist eine mitschrift. wenn ich nachträglich was dran editiere, dann kann ich das machen, aber hat keine auswirkung.
für python nutze ich pycharm.
@harryberlin: Auch wenn Du eine Textdatei nur anschauen willst, öffnest Du sie in einem Texteditor. Reine Anzeigeprogramme gibt es in dem Bereich ja eher nicht. Deswegen reden wir von Texteditoren. Notepad ist kein guter Texteditor, und Wordpad ist gar keiner. Das ist eine Textverarbeitung in die Du den Text halt importieren kannst. Beide Programme sind uralt und stammen noch aus Zeiten bevor UTF-8 breitere Verwendung fand.
Ein guter Texteditor zum Programmieren sollte UTF-8 auch ohne BOM erraten, oder standardmässig darauf eingestellt werden können. Und dann kann man den auch zum betrachten von Protokolldateien verwenden.
Wenn Du PyCharm sowieso offen hast, könntest Du das auch zum betrachten der Protokolldateien verwenden.