Server IP : 15.235.198.142 / Your IP : 216.73.216.155 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ballsack 6.8.0-45-generic #45-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 30 12:02:04 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /snap/core24/current/lib/python3/dist-packages/cloudinit/log/ |
Upload File : |
import logging import os import sys from cloudinit.performance import timed LOG = logging.getLogger(__name__) def logexc( log, msg, *args, log_level: int = logging.WARNING, exc_info=True ) -> None: log.log(log_level, msg, *args) log.debug(msg, exc_info=exc_info, *args) @timed("Writing to console") def write_to_console(conpath, text): with open(conpath, "w") as wfh: wfh.write(text) wfh.flush() def multi_log( text, console=True, stderr=True, log=None, log_level=logging.DEBUG, fallback_to_stdout=True, ): if stderr: sys.stderr.write(text) if console: conpath = "/dev/console" writing_to_console_worked = False if os.path.exists(conpath): try: write_to_console(conpath, text) writing_to_console_worked = True except OSError: console_error = "Failed to write to /dev/console" sys.stdout.write(f"{console_error}\n") if log: log.log(logging.WARNING, console_error) if fallback_to_stdout and not writing_to_console_worked: # A container may lack /dev/console (arguably a container bug). # Additionally, /dev/console may not be writable to on a VM (again # likely a VM bug or virtualization bug). # # If either of these is the case, then write output to stdout. # This will result in duplicate stderr and stdout messages if # stderr was True. # # even though systemd might have set up output to go to # /dev/console, the user may have configured elsewhere via # cloud-config 'output'. If there is /dev/console, messages will # still get there. sys.stdout.write(text) if log: if text[-1] == "\n": log.log(log_level, text[:-1]) else: log.log(log_level, text) def error(msg, rc=1, fmt="Error:\n{}", sys_exit=False): r"""Print error to stderr and return or exit @param msg: message to print @param rc: return code (default: 1) @param fmt: format string for putting message in (default: 'Error:\n {}') @param sys_exit: exit when called (default: false) """ print(fmt.format(msg), file=sys.stderr) if sys_exit: sys.exit(rc) return rc