晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
| DIR:/lib/python3.6/site-packages/up2date_client/ |
| Current File : //lib/python3.6/site-packages/up2date_client/up2dateLog.py |
#
import time
import traceback
from rhn.i18n import ustr, sstr
from up2date_client import config
class Log:
"""
attempt to log all interesting stuff, namely, anything that hits
the network any error messages, package installs, etc
""" # " emacs sucks
def __init__(self):
self.app = "up2date"
self.cfg = config.initUp2dateConfig()
self.log_info = ''
def set_app_name(self, name):
self.app = str(name)
def log_debug(self, *args):
if self.cfg["debug"] > 1:
self.log_me("D: ", *args)
def log_me(self, *args):
"""General logging function.
Eg: log_me("I am a banana.")
"""
self.log_info = "[%s] %s" % (time.ctime(time.time()), self.app)
s = u""
for i in args:
# we really need unicode(str(i)) here, because i can be anything
# from string or int to list, dict or even class
i = ustr(str(i))
s += i
if self.cfg["debug"] > 1:
print(s)
self.write_log(s)
def trace_me(self):
self.log_info = "[%s] %s" % (time.ctime(time.time()), self.app)
x = traceback.extract_stack()
msg = ''.join(traceback.format_list(x))
self.write_log(msg)
def log_exception(self, logtype, value, tb):
self.log_info = "[%s] %s" % (time.ctime(time.time()), self.app)
output = ["\n"] # Accumulate the strings in a list
output.append("Traceback (most recent call last):\n")
output = output + traceback.format_list(traceback.extract_tb(tb))
output.append("%s: %s\n" % (logtype, value))
self.write_log("".join(output))
def write_log(self, s):
log_name = self.cfg["logFile"] or "/var/log/up2date"
log_file = open(log_name, 'a')
msg = u"%s %s\n" % (ustr(self.log_info), ustr(s))
log_file.write(sstr(msg))
log_file.flush()
log_file.close()
def initLog():
global log
try:
log = log
except NameError:
log = None
if log == None:
log = Log()
return log
|