Je suis en train de rencontrer un problème.Puis-je désactiver l'en-tête du journal pour ruby logger?
Comme vous le savez peut-être, le logger ruby ajoute un en-tête de journalisation en haut de chaque nouveau fichier journal.
"# Logfile created on %s by %s\n" % [Time.now.to_s, Logger::ProgName]
Je Logging des fichiers CSV pour les importer dans un entrepôt plus tard, habituellement je saute juste la première ligne avec l'en-tête. Il semble qu'il y ait un bogue dans l'enregistreur, car parfois l'en-tête de journalisation apparaît plus d'une fois, au beau milieu d'un fichier journal. J'ai donc décidé de laisser simplement cette tête dehors. À ma grande surprise, je n'ai trouvé aucun argument que l'on puisse passer à la création d'un enregistreur. J'ai pensé à quelque chose comme ceci:
Logger.new "info.log", :skip_header => true
Mais ce n'est tout simplement pas là. Je cherchai dans les sources principales de rubis et étonnamment il n'y a vraiment rien qui pourrait empêcher l'enregistreur d'ajouter l'en-tête du journal:
def create_logfile(filename)
logdev = open(filename, (File::WRONLY | File::APPEND | File::CREAT))
logdev.sync = true
add_log_header(logdev)
logdev
end
def add_log_header(file)
file.write(
"# Logfile created on %s by %s\n" % [Time.now.to_s, Logger::ProgName]
)
end
Est-ce que quelqu'un a une idée de ce que je pouvais faire, pour empêcher l'en-tête du journal? J'utilise Ruby 1.8.7 302 avec Rails 2.3.5 ici. Ignorer simplement les commentaires du côté de l'entrepôt n'est pas possible parce que je n'ai aucun contrôle sur le code, et il semble risqué de simplement l'ignorer, si quelque chose ne va pas avec une ligne d'enregistrement.
Est-ce que quelqu'un connaît un enregistreur qui le permet? Pensez-vous que ce serait une bonne idée d'utiliser et d'écrire simplement dans un fichier?
Merci à l'avance, Tommy
C'est génial, merci! Je n'ai pas pensé à "patcher monkey" l'enregistreur parce que c'est considéré comme sale. Mais avec votre approche, rien ne change pour les appels précédents et ultérieurs. Génial! –