レベル1
-
strftimeを調べます
-
あなたはクワーグをサポートする必要があります
-
f-stringを使用します(3.6以上を使用している場合)
レベル2
ご回答有難うございます!病気あなたのポイントを見て:D
レベル1
ねえ、数週間前に、関数の簡単なロギングを可能にするためにデコレーターを使い始めました。私は本当にそれが好きで、あなたの何人かもそうかもしれないと思いました。
改善方法やその他のアノテーションについてご意見がございましたら、ぜひお聞かせください。
コピーと貼り付けのコード:
def log(func):
""" log decorator to enable simple logging for functions """
def inner(*args):
timestamp = str(datetime.datetime.now()).split(".")[0]
res = func(*args)
print("[%s] {%s} %s -> %s" %(timestamp, func.__name__, args, res))
return res
return inner
次で作成したスクリーンショット:https : //carbon.now.sh/
編集:書式設定
レベル2
Eambertide非表示のスコア・37分前
デコレータは、関数内で費やした時間を計算するのにも最適です。
レベル1
印刷ステートメントの代わりにロギングモジュールの使用を検討してください。次に、ロガーにオプションを設定する構成可能なデコレーターにすることができます。
レベル2
mushy_wombat非表示のスコア・42分前
良いアイデア、ありがとう!
レベル1
おそらく、関数が例外をスローしたときにも時間と引数が出力されるように変更することを検討してください(その後、おそらくその例外をスローする必要があります)
レベル2
いい視点ね!追加します:)
レベル1
cantremembermypasswd非表示のスコア・52分前
再利用可能なライブラリ(pip install reusables)に1つあります
def log_exception(log="reusables", message=None, exceptions=(Exception, ),
level=logging.ERROR, show_traceback=True):
"""
Wrapper. Log the traceback to any exceptions raised. Possible to raise
custom exception.
.. code :: python
@reusables.log_exception()
def test():
raise Exception("Bad")
# 2016-12-26 12:38:01,381 – reusables ERROR Exception in test – Bad
# Traceback (most recent call last):
# File "<input>", line 1, in <module>
# File "reusables\wrappers.py", line 200, in wrapper
# raise err
# Exception: Bad
Message format options: {func} {err} {args} {kwargs}
:param exceptions: types of exceptions to catch
:param log: log name to use
:param message: message to use in log
:param level: logging level
:param show_traceback: include full traceback or just error message
"""
def func_wrapper(func):
@wraps(func)
def wrapper(*args, **kwargs):
msg = message if message else "Exception in '{func}': {err}"
if not message:
msg = _add_args(msg, *args, **kwargs)
try:
return func(*args, **kwargs)
except exceptions as err:
my_logger = (logging.getLogger(log) if isinstance(log, str)
else log)
my_logger.log(level, msg.format(func=func.__name__,
err=str(err),
args=args, kwargs=kwargs),
exc_info=show_traceback)
raise err
return wrapper
return func_wrapper
レベル2
mushy_wombat非表示のスコア・43分前
よかった、ありがとう!これについては知りませんでした