mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
fix logger behavior so that it is initialized after command line parsed
This commit is contained in:
parent
79198b4bba
commit
ae9d0c6c1b
@ -13,14 +13,20 @@ from typing import (
|
|||||||
|
|
||||||
from pydantic import BaseModel, ValidationError
|
from pydantic import BaseModel, ValidationError
|
||||||
from pydantic.fields import Field
|
from pydantic.fields import Field
|
||||||
|
|
||||||
|
# This should come early so that the logger can pick up its configuration options
|
||||||
|
from .services.config import InvokeAIAppConfig
|
||||||
|
from invokeai.backend.util.logging import InvokeAILogger
|
||||||
|
config = InvokeAIAppConfig.get_config()
|
||||||
|
config.parse_args()
|
||||||
|
logger = InvokeAILogger().getLogger(config=config)
|
||||||
|
|
||||||
from invokeai.app.services.image_record_storage import SqliteImageRecordStorage
|
from invokeai.app.services.image_record_storage import SqliteImageRecordStorage
|
||||||
from invokeai.app.services.images import ImageService
|
from invokeai.app.services.images import ImageService
|
||||||
from invokeai.app.services.metadata import CoreMetadataService
|
from invokeai.app.services.metadata import CoreMetadataService
|
||||||
from invokeai.app.services.resource_name import SimpleNameService
|
from invokeai.app.services.resource_name import SimpleNameService
|
||||||
from invokeai.app.services.urls import LocalUrlService
|
from invokeai.app.services.urls import LocalUrlService
|
||||||
|
|
||||||
|
|
||||||
import invokeai.backend.util.logging as logger
|
|
||||||
from .services.default_graphs import create_system_graphs
|
from .services.default_graphs import create_system_graphs
|
||||||
from .services.latent_storage import DiskLatentsStorage, ForwardCacheLatentsStorage
|
from .services.latent_storage import DiskLatentsStorage, ForwardCacheLatentsStorage
|
||||||
|
|
||||||
@ -38,7 +44,7 @@ from .services.invocation_services import InvocationServices
|
|||||||
from .services.invoker import Invoker
|
from .services.invoker import Invoker
|
||||||
from .services.processor import DefaultInvocationProcessor
|
from .services.processor import DefaultInvocationProcessor
|
||||||
from .services.sqlite import SqliteItemStorage
|
from .services.sqlite import SqliteItemStorage
|
||||||
from .services.config import InvokeAIAppConfig
|
|
||||||
|
|
||||||
class CliCommand(BaseModel):
|
class CliCommand(BaseModel):
|
||||||
command: Union[BaseCommand.get_commands() + BaseInvocation.get_invocations()] = Field(discriminator="type") # type: ignore
|
command: Union[BaseCommand.get_commands() + BaseInvocation.get_invocations()] = Field(discriminator="type") # type: ignore
|
||||||
@ -47,7 +53,6 @@ class CliCommand(BaseModel):
|
|||||||
class InvalidArgs(Exception):
|
class InvalidArgs(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def add_invocation_args(command_parser):
|
def add_invocation_args(command_parser):
|
||||||
# Add linking capability
|
# Add linking capability
|
||||||
command_parser.add_argument(
|
command_parser.add_argument(
|
||||||
@ -191,15 +196,8 @@ def invoke_all(context: CliContext):
|
|||||||
|
|
||||||
raise SessionError()
|
raise SessionError()
|
||||||
|
|
||||||
|
|
||||||
logger = logger.InvokeAILogger.getLogger()
|
|
||||||
|
|
||||||
|
|
||||||
def invoke_cli():
|
def invoke_cli():
|
||||||
# this gets the basic configuration
|
|
||||||
config = InvokeAIAppConfig.get_config()
|
|
||||||
config.parse_args()
|
|
||||||
|
|
||||||
# get the optional list of invocations to execute on the command line
|
# get the optional list of invocations to execute on the command line
|
||||||
parser = config.get_parser()
|
parser = config.get_parser()
|
||||||
parser.add_argument('commands',nargs='*')
|
parser.add_argument('commands',nargs='*')
|
||||||
|
@ -777,7 +777,7 @@ class ModelManager(object):
|
|||||||
|
|
||||||
self.logger.info(f"Probing {thing} for import")
|
self.logger.info(f"Probing {thing} for import")
|
||||||
|
|
||||||
if thing.startswith(("http:", "https:", "ftp:")):
|
if str(thing).startswith(("http:", "https:", "ftp:")):
|
||||||
self.logger.info(f"{thing} appears to be a URL")
|
self.logger.info(f"{thing} appears to be a URL")
|
||||||
model_path = self._resolve_path(
|
model_path = self._resolve_path(
|
||||||
thing, "models/ldm/stable-diffusion-v1"
|
thing, "models/ldm/stable-diffusion-v1"
|
||||||
|
@ -181,9 +181,11 @@ class InvokeAILogger(object):
|
|||||||
loggers = dict()
|
loggers = dict()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def getLogger(cls, name: str = 'InvokeAI') -> logging.Logger:
|
def getLogger(cls, name: str = 'InvokeAI', config: InvokeAIAppConfig=None) -> logging.Logger:
|
||||||
config = get_invokeai_config()
|
if not config:
|
||||||
|
config = InvokeAIAppConfig()
|
||||||
|
config.parse_args()
|
||||||
|
|
||||||
if name not in cls.loggers:
|
if name not in cls.loggers:
|
||||||
logger = logging.getLogger(name)
|
logger = logging.getLogger(name)
|
||||||
logger.setLevel(config.log_level.upper()) # yes, strings work here
|
logger.setLevel(config.log_level.upper()) # yes, strings work here
|
||||||
@ -195,15 +197,16 @@ class InvokeAILogger(object):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def getLoggers(cls, config: InvokeAIAppConfig) -> list[logging.Handler]:
|
def getLoggers(cls, config: InvokeAIAppConfig) -> list[logging.Handler]:
|
||||||
handler_strs = config.log_handlers
|
handler_strs = config.log_handlers
|
||||||
print(f'handler_strs={handler_strs}')
|
|
||||||
handlers = list()
|
handlers = list()
|
||||||
for handler in handler_strs:
|
for handler in handler_strs:
|
||||||
handler_name,*args = handler.split('=',2)
|
handler_name,*args = handler.split('=',2)
|
||||||
args = args[0] if len(args) > 0 else None
|
args = args[0] if len(args) > 0 else None
|
||||||
|
|
||||||
# console is the only handler that gets a custom formatter
|
# console and file get the fancy formatter.
|
||||||
|
# syslog gets a simple one
|
||||||
|
# http gets no custom formatter
|
||||||
|
formatter = LOG_FORMATTERS[config.log_format]
|
||||||
if handler_name=='console':
|
if handler_name=='console':
|
||||||
formatter = LOG_FORMATTERS[config.log_format]
|
|
||||||
ch = logging.StreamHandler()
|
ch = logging.StreamHandler()
|
||||||
ch.setFormatter(formatter())
|
ch.setFormatter(formatter())
|
||||||
handlers.append(ch)
|
handlers.append(ch)
|
||||||
@ -214,7 +217,9 @@ class InvokeAILogger(object):
|
|||||||
handlers.append(ch)
|
handlers.append(ch)
|
||||||
|
|
||||||
elif handler_name=='file':
|
elif handler_name=='file':
|
||||||
handlers.append(cls._parse_file_args(args))
|
ch = cls._parse_file_args(args)
|
||||||
|
ch.setFormatter(formatter())
|
||||||
|
handlers.append(ch)
|
||||||
|
|
||||||
elif handler_name=='http':
|
elif handler_name=='http':
|
||||||
handlers.append(cls._parse_http_args(args))
|
handlers.append(cls._parse_http_args(args))
|
||||||
|
Loading…
Reference in New Issue
Block a user