Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
cura / opt / cura / lib / uranium / plugins / FileLogger / FileLogger.py
Size: Mime:
# Copyright (c) 2015 Ultimaker B.V.
# Uranium is released under the terms of the AGPLv3 or higher.

from UM.Logger import LogOutput
from UM.Resources import Resources

import logging
import sys
import os.path

class FileLogger(LogOutput):
    def __init__(self, file_name):
        super().__init__()
        self._logger =  logging.getLogger(self._name) #Create python logger 
        self._logger.setLevel(logging.DEBUG)

        # Do not try to save to the app dir as it may not be writeable or may not be the right
        # location to save the log file. Instead, try and save in the settings location since
        # that should be writeable.
        self.setFileName(Resources.getStoragePath(Resources.Resources, file_name))

    def setFileName(self, file_name):
        if(".log" in file_name):
            file_handler = logging.FileHandler(file_name)
            format_handler = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
            file_handler.setFormatter(format_handler)
            self._logger.addHandler(file_handler)
        else:
            pass #TODO, add handling
    
    ##  Log message to file. 
    #   \param log_type "e" (error) , "i"(info), "d"(debug) or "w"(warning)
    #   \param message String containing message to be logged
    def log(self, log_type, message):
        if(log_type == "w"): # Warning
            self._logger.warning(message)
        elif(log_type == "i"): # Info
            self._logger.info(message)
        elif(log_type == "e"): # Error
            self._logger.error(message)
        elif(log_type == "d"):
            self._logger.debug(message)
        elif(log_type == "c"):
            self._logger.critical(message)
        else:
            print("Unable to log")