mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-12 23:36:54 +08:00
@@ -1,10 +1,11 @@
|
|||||||
# Copyright (c) Microsoft Corporation.
|
# Copyright (c) Microsoft Corporation.
|
||||||
# Licensed under the MIT License.
|
# Licensed under the MIT License.
|
||||||
|
|
||||||
|
import logging
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
import numpy as np
|
||||||
from sklearn.metrics import mean_squared_error
|
from sklearn.metrics import mean_squared_error
|
||||||
from typing import Dict, Text, Any
|
from typing import Dict, Text, Any
|
||||||
import numpy as np
|
|
||||||
|
|
||||||
from ...contrib.eva.alpha import calc_ic
|
from ...contrib.eva.alpha import calc_ic
|
||||||
from ...workflow.record_temp import RecordTemp
|
from ...workflow.record_temp import RecordTemp
|
||||||
@@ -12,7 +13,7 @@ from ...workflow.record_temp import SignalRecord
|
|||||||
from ...data import dataset as qlib_dataset
|
from ...data import dataset as qlib_dataset
|
||||||
from ...log import get_module_logger
|
from ...log import get_module_logger
|
||||||
|
|
||||||
logger = get_module_logger("workflow", "INFO")
|
logger = get_module_logger("workflow", logging.INFO)
|
||||||
|
|
||||||
|
|
||||||
class MultiSegRecord(RecordTemp):
|
class MultiSegRecord(RecordTemp):
|
||||||
|
|||||||
34
qlib/log.py
34
qlib/log.py
@@ -12,7 +12,37 @@ from contextlib import contextmanager
|
|||||||
from .config import C
|
from .config import C
|
||||||
|
|
||||||
|
|
||||||
def get_module_logger(module_name, level: Optional[int] = None):
|
class MetaLogger(type):
|
||||||
|
def __new__(cls, name, bases, dict):
|
||||||
|
wrapper_dict = logging.Logger.__dict__.copy()
|
||||||
|
wrapper_dict.update(dict)
|
||||||
|
wrapper_dict["__doc__"] = logging.Logger.__doc__
|
||||||
|
return type.__new__(cls, name, bases, wrapper_dict)
|
||||||
|
|
||||||
|
|
||||||
|
class QlibLogger(metaclass=MetaLogger):
|
||||||
|
"""
|
||||||
|
Customized logger for Qlib.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, module_name):
|
||||||
|
self.module_name = module_name
|
||||||
|
self.level = 0
|
||||||
|
|
||||||
|
@property
|
||||||
|
def logger(self):
|
||||||
|
logger = logging.getLogger(self.module_name)
|
||||||
|
logger.setLevel(self.level)
|
||||||
|
return logger
|
||||||
|
|
||||||
|
def setLevel(self, level):
|
||||||
|
self.level = level
|
||||||
|
|
||||||
|
def __getattr__(self, name):
|
||||||
|
return self.logger.__getattribute__(name)
|
||||||
|
|
||||||
|
|
||||||
|
def get_module_logger(module_name, level: Optional[int] = None) -> logging.Logger:
|
||||||
"""
|
"""
|
||||||
Get a logger for a specific module.
|
Get a logger for a specific module.
|
||||||
|
|
||||||
@@ -27,7 +57,7 @@ def get_module_logger(module_name, level: Optional[int] = None):
|
|||||||
|
|
||||||
module_name = "qlib.{}".format(module_name)
|
module_name = "qlib.{}".format(module_name)
|
||||||
# Get logger.
|
# Get logger.
|
||||||
module_logger = logging.getLogger(module_name)
|
module_logger = QlibLogger(module_name)
|
||||||
module_logger.setLevel(level)
|
module_logger.setLevel(level)
|
||||||
return module_logger
|
return module_logger
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
# Copyright (c) Microsoft Corporation.
|
# Copyright (c) Microsoft Corporation.
|
||||||
# Licensed under the MIT License.
|
# Licensed under the MIT License.
|
||||||
|
|
||||||
import mlflow
|
import mlflow, logging
|
||||||
from mlflow.entities import ViewType
|
from mlflow.entities import ViewType
|
||||||
from mlflow.exceptions import MlflowException
|
from mlflow.exceptions import MlflowException
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from .recorder import Recorder, MLflowRecorder
|
from .recorder import Recorder, MLflowRecorder
|
||||||
from ..log import get_module_logger
|
from ..log import get_module_logger
|
||||||
|
|
||||||
logger = get_module_logger("workflow", "INFO")
|
logger = get_module_logger("workflow", logging.INFO)
|
||||||
|
|
||||||
|
|
||||||
class Experiment:
|
class Experiment:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
import mlflow
|
import mlflow
|
||||||
from mlflow.exceptions import MlflowException
|
from mlflow.exceptions import MlflowException
|
||||||
from mlflow.entities import ViewType
|
from mlflow.entities import ViewType
|
||||||
import os
|
import os, logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from typing import Optional, Text
|
from typing import Optional, Text
|
||||||
@@ -14,7 +14,7 @@ from ..config import C
|
|||||||
from .recorder import Recorder
|
from .recorder import Recorder
|
||||||
from ..log import get_module_logger
|
from ..log import get_module_logger
|
||||||
|
|
||||||
logger = get_module_logger("workflow", "INFO")
|
logger = get_module_logger("workflow", logging.INFO)
|
||||||
|
|
||||||
|
|
||||||
class ExpManager:
|
class ExpManager:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Copyright (c) Microsoft Corporation.
|
# Copyright (c) Microsoft Corporation.
|
||||||
# Licensed under the MIT License.
|
# Licensed under the MIT License.
|
||||||
|
|
||||||
import re
|
import re, logging
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
@@ -16,7 +16,7 @@ from ..utils import flatten_dict
|
|||||||
from ..contrib.eva.alpha import calc_ic, calc_long_short_return, calc_long_short_prec
|
from ..contrib.eva.alpha import calc_ic, calc_long_short_return, calc_long_short_prec
|
||||||
from ..contrib.strategy.strategy import BaseStrategy
|
from ..contrib.strategy.strategy import BaseStrategy
|
||||||
|
|
||||||
logger = get_module_logger("workflow", "INFO")
|
logger = get_module_logger("workflow", logging.INFO)
|
||||||
|
|
||||||
|
|
||||||
class RecordTemp:
|
class RecordTemp:
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
# Copyright (c) Microsoft Corporation.
|
# Copyright (c) Microsoft Corporation.
|
||||||
# Licensed under the MIT License.
|
# Licensed under the MIT License.
|
||||||
|
|
||||||
import mlflow
|
import mlflow, logging
|
||||||
import shutil, os, pickle, tempfile, codecs, pickle
|
import shutil, os, pickle, tempfile, codecs, pickle
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from ..utils.objm import FileManager
|
from ..utils.objm import FileManager
|
||||||
from ..log import get_module_logger
|
from ..log import get_module_logger
|
||||||
|
|
||||||
logger = get_module_logger("workflow", "INFO")
|
logger = get_module_logger("workflow", logging.INFO)
|
||||||
|
|
||||||
|
|
||||||
class Recorder:
|
class Recorder:
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
# Copyright (c) Microsoft Corporation.
|
# Copyright (c) Microsoft Corporation.
|
||||||
# Licensed under the MIT License.
|
# Licensed under the MIT License.
|
||||||
|
|
||||||
import sys, traceback, signal, atexit
|
import sys, traceback, signal, atexit, logging
|
||||||
from . import R
|
from . import R
|
||||||
from .recorder import Recorder
|
from .recorder import Recorder
|
||||||
from ..log import get_module_logger
|
from ..log import get_module_logger
|
||||||
|
|
||||||
logger = get_module_logger("workflow", "INFO")
|
logger = get_module_logger("workflow", logging.INFO)
|
||||||
|
|
||||||
|
|
||||||
# function to handle the experiment when unusual program ending occurs
|
# function to handle the experiment when unusual program ending occurs
|
||||||
|
|||||||
Reference in New Issue
Block a user