ok
Direktori : /opt/alt/python37/lib/python3.7/site-packages/clcommon/ |
Current File : //opt/alt/python37/lib/python3.7/site-packages/clcommon/cllog.py |
# -*- coding: utf-8 -*- # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2018 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT # from __future__ import absolute_import from __future__ import division from __future__ import print_function import datetime import os import sys import fcntl class ClAuditLog: def __init__(self, log_file_name): self._log_file_name = log_file_name def info_log_write(self, msg=""): dt_now = datetime.datetime.now() # Determine parent PID and it's name parent_proc_id = os.getppid() # Determine parent process name proc_name = self._get_process_name(parent_proc_id) # write to log file try: audit_log_file = open(self._log_file_name, 'a') fcntl.lockf(audit_log_file, fcntl.LOCK_EX | fcntl.LOCK_NB) audit_log_file.write(dt_now.strftime("%Y.%m.%d %H:%M:%S") + ": Parent process: " + proc_name + " (PID: " + str(parent_proc_id) + "): Args: " + str(sys.argv[1:]) + " " + msg + "\n") audit_log_file.close() except (IOError, OSError): # Ignore all file errors pass @staticmethod def _get_process_name(pid): """ Get process name by pid :param pid: PID for get process name :return: process name """ name = "<Unknown>" try: f = open("/proc/%s/stat" % pid, 'r') name = f.read().split(' ')[1].replace('(', '').replace(')', '') f.close() except: pass return name