Как записать имя пользователя ОС, используя библиотеку журналов python?
Я использую python-watchdog
для отслеживания определенных путей изменений, таких как добавление, удаление, изменение и т. д. Наряду с информацией о времени и сообщениях я хочу получить имя пользователя, который внес это изменение. Я смотрел на getpass
, и я искал переменную внутри самой регистрации, но не смог ничего найти.
Есть какие-нибудь подсказки? Мой сторожевой код ниже
print 'starting the watcher mate...'
create_log_file()
logging.basicConfig(filename = log_file, level = logging.INFO, format = '%(asctime)s - %(message)s', datefmt = '%Y-%m-%d %H:%M:%S')
path = sys.argv[1] if len(sys.argv) > 1 else '/etc/nginx/'
event_handler = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
1 ответ
Обновить
Я смог решить мою проблему таким образом. Я решил проблему с помощью метода переопределения. Я создал другой класс в своем скрипте Python под названием MyLoggingEventHandler и включил имя пользователя, используя getpass.getuser()
функция. Теперь я могу получить информацию о пользователе в моих отчетах.
Код
class MyLoggingEventHandler(LoggingEventHandler):
def on_moved(self, event):
super(LoggingEventHandler, self).on_moved(event)
what = 'directory' if event.is_directory else 'file'
logging.info("Moved %s: from %s to %s, by %s", what, event.src_path, event.dest_path, getpass.getuser())
def on_created(self, event):
super(LoggingEventHandler, self).on_created(event)
what = 'directory' if event.is_directory else 'file'
logging.info("Created %s: %s, by %s", what, event.src_path, getpass.getuser())
def on_deleted(self, event):
super(LoggingEventHandler, self).on_deleted(event)
what = 'directory' if event.is_directory else 'file'
logging.info("Deleted %s: %s, by %s", what, event.src_path, getpass.getuser())
def on_modified(self, event):
super(LoggingEventHandler, self).on_modified(event)
what = 'directory' if event.is_directory else 'file'
logging.info("Modified %s: %s, by %s", what, event.src_path, getpass.getuser())
Это 2 строки из моего файла журнала.
2016-04-17 15:23:16 - Modified file: /path/to/file.txt, by myusername -
2016-04-17 15:23:19 - Modified file: /path/to/file2.txt, by myusername -