本文整理汇总了Python中pyLibrary.debugs.logs.Log类的典型用法代码示例。如果您正苦于以下问题:Python Log类的具体用法?Python Log怎么用?Python Log使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Log类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get_file
def get_file(ref, url):
from pyLibrary.env.files import File
if ref.path.startswith("~"):
home_path = os.path.expanduser("~")
if os.sep == "\\":
home_path = "/" + home_path.replace(os.sep, "/")
if home_path.endswith("/"):
home_path = home_path[:-1]
ref.path = home_path + ref.path[1::]
elif not ref.path.startswith("/"):
# CONVERT RELATIVE TO ABSOLUTE
if ref.path[0] == ".":
num_dot = 1
while ref.path[num_dot] == ".":
num_dot += 1
parent = url.path.rstrip("/").split("/")[:-num_dot]
ref.path = "/".join(parent) + ref.path[num_dot:]
else:
parent = url.path.rstrip("/").split("/")[:-1]
ref.path = "/".join(parent) + "/" + ref.path
path = ref.path if os.sep != "\\" else ref.path[1::].replace("/", "\\")
try:
if DEBUG:
_Log.note("reading file {{path}}", path=path)
content = File(path).read()
except Exception, e:
content = None
_Log.error("Could not read file {{filename}}", filename=path, cause=e)
开发者ID:klahnakoski,项目名称:MoDataSubmission,代码行数:34,代码来源:ref.py
示例2: groupby_size
def groupby_size(data, size):
if hasattr(data, "next"):
iterator = data
elif hasattr(data, "__iter__"):
iterator = data.__iter__()
else:
Log.error("do not know how to handle this type")
done = DictList()
def more():
output = DictList()
for i in range(size):
try:
output.append(iterator.next())
except StopIteration:
done.append(True)
break
return output
# THIS IS LAZY
i = 0
while True:
output = more()
yield (i, output)
if len(done) > 0:
break
i += 1
开发者ID:klahnakoski,项目名称:esReplicate,代码行数:27,代码来源:group_by.py
示例3: execute
def execute(self, requests):
"""
RETURN A GENERATOR THAT HAS len(requests) RESULTS (ANY ORDER)
EXPECTING requests TO BE A list OF dicts, EACH dict IS USED AS kwargs TO GIVEN functions
"""
if not isinstance(requests, (list, tuple, GeneratorType, Iterable)):
Log.error("Expecting requests to be a list or generator", stack_depth=1)
else:
requests = list(requests)
# FILL QUEUE WITH WORK
self.inbound.extend(requests)
num = len(requests)
def output():
for i in xrange(num):
result = self.outbound.pop()
if "exception" in result:
raise result["exception"]
else:
yield result["response"]
if self.outbound is not None:
return output()
else:
return
开发者ID:klahnakoski,项目名称:MoDataSubmission,代码行数:27,代码来源:multithread.py
示例4: process_test_result
def process_test_result(source_key, source, destination, please_stop=None):
path = key2path(source_key)
destination.delete({"and": [
{"term": {"etl.source.id": path[1]}},
{"term": {"etl.source.source.id": path[0]}}
]})
lines = source.read_lines()
keys = []
data = []
for l in lines:
record = convert.json2value(l)
if record._id==None:
continue
record.result.crash_result = None #TODO: Remove me after May 2015
keys.append(record._id)
data.append({
"id": record._id,
"value": record
})
record._id = None
if data:
try:
destination.extend(data)
except Exception, e:
if "Can not decide on index by build.date" in e:
if source.bucket.name == "ekyle-test-result":
# KNOWN CORRUPTION
# TODO: REMOVE LATER (today = Mar2015)
delete_list = source.bucket.keys(prefix=key_prefix(source_key))
for d in delete_list:
source.bucket.delete_key(d)
Log.error("Can not add to sink", e)
开发者ID:klahnakoski,项目名称:Activedata-ETL,代码行数:34,代码来源:test_result_to_sink.py
示例5: __init__
def __init__(self, filename, buffering=2 ** 14, suffix=None):
"""
YOU MAY SET filename TO {"path":p, "key":k} FOR CRYPTO FILES
"""
if filename == None:
from pyLibrary.debugs.logs import Log
Log.error("File must be given a filename")
elif isinstance(filename, basestring):
self.key = None
if filename.startswith("~"):
home_path = os.path.expanduser("~")
if os.sep == "\\":
home_path = home_path.replace(os.sep, "/")
if home_path.endswith("/"):
home_path = home_path[:-1]
filename = home_path + filename[1::]
self._filename = filename.replace(os.sep, "/") # USE UNIX STANDARD
else:
self.key = convert.base642bytearray(filename.key)
self._filename = "/".join(filename.path.split(os.sep)) # USE UNIX STANDARD
while self._filename.find(".../") >= 0:
# LET ... REFER TO GRANDPARENT, .... REFER TO GREAT-GRAND-PARENT, etc...
self._filename = self._filename.replace(".../", "../../")
self.buffering = buffering
if suffix:
self._filename = File.add_suffix(self._filename, suffix)
开发者ID:klahnakoski,项目名称:MoTreeherder,代码行数:30,代码来源:files.py
示例6: execute
def execute(
self,
command,
param=None,
retry=True # IF command FAILS, JUST THROW ERROR
):
if param:
command = expand_template(command, self.quote_param(param))
output = None
done = False
while not done:
try:
with self.locker:
if not self.connection:
self._connect()
with Closer(self.connection.cursor()) as curs:
curs.execute(command)
if curs.rowcount >= 0:
output = curs.fetchall()
self.connection.commit()
done = True
except Exception, e:
try:
self.connection.rollback()
# TODO: FIGURE OUT WHY rollback() DOES NOT HELP
self.connection.close()
except Exception, f:
pass
self.connection = None
self._connect()
if not retry:
Log.error("Problem with command:\n{{command|indent}}", command= command, cause=e)
开发者ID:klahnakoski,项目名称:MoDataSubmission,代码行数:34,代码来源:redshift.py
示例7: _get_from_elasticsearch
def _get_from_elasticsearch(self, revision, locale=None):
rev = revision.changeset.id
query = {
"query": {"filtered": {
"query": {"match_all": {}},
"filter": {"and": [
{"prefix": {"changeset.id": rev[0:12]}},
{"term": {"branch.name": revision.branch.name}},
{"term": {"branch.locale": coalesce(locale, revision.branch.locale, DEFAULT_LOCALE)}}
]}
}},
"size": 2000,
}
try:
docs = self.es.search(query, timeout=120).hits.hits
if len(docs) > 1:
for d in docs:
if d._id.endswith(d._source.branch.locale):
return d._source
Log.warning("expecting no more than one document")
return docs[0]._source
except Exception, e:
Log.warning("Bad ES call", e)
return None
开发者ID:klahnakoski,项目名称:MoHg,代码行数:25,代码来源:hg_mozilla_org.py
示例8: read_settings
def read_settings(filename=None, defs=None):
# READ SETTINGS
if filename:
settings_file = File(filename)
if not settings_file.exists:
Log.error("Can not file settings file {{filename}}", {
"filename": settings_file.abspath
})
settings = ref.get("file:///" + settings_file.abspath)
if defs:
settings.args = argparse(defs)
return settings
else:
defs = listwrap(defs)
defs.append({
"name": ["--settings", "--settings-file", "--settings_file"],
"help": "path to JSON file with settings",
"type": str,
"dest": "filename",
"default": "./settings.json",
"required": False
})
args = argparse(defs)
settings = ref.get("file://" + args.filename.replace(os.sep, "/"))
settings.args = args
return settings
开发者ID:klahnakoski,项目名称:MoTreeherder,代码行数:26,代码来源:startup.py
示例9: insert_list
def insert_list(self, table_name, records):
if not records:
return
columns = set()
for r in records:
columns |= set(r.keys())
columns = jx.sort(columns)
try:
self.execute(
"DELETE FROM " + self.quote_column(table_name) + " WHERE _id IN {{ids}}",
{"ids": self.quote_column([r["_id"] for r in records])}
)
command = \
"INSERT INTO " + self.quote_column(table_name) + "(" + \
",".join([self.quote_column(k) for k in columns]) + \
") VALUES " + ",\n".join([
"(" + ",".join([self.quote_value(r.get(k, None)) for k in columns]) + ")"
for r in records
])
self.execute(command)
except Exception, e:
Log.error("problem with insert", e)
开发者ID:klahnakoski,项目名称:MoDataSubmission,代码行数:25,代码来源:redshift.py
示例10: _convert_from
def _convert_from(self, frum):
if isinstance(frum, basestring):
return Dict(name=frum)
elif isinstance(frum, (Container, Query)):
return frum
else:
Log.error("Expecting from clause to be a name, or a container")
开发者ID:klahnakoski,项目名称:MoDevETL,代码行数:7,代码来源:normal.py
示例11: _convert_edge
def _convert_edge(self, edge):
if isinstance(edge, basestring):
return Dict(
name=edge,
value=edge,
domain=self._convert_domain()
)
else:
edge = wrap(edge)
if not edge.name and not isinstance(edge.value, basestring):
Log.error("You must name compound edges: {{edge}}", edge= edge)
if isinstance(edge.value, (Mapping, list)) and not edge.domain:
# COMPLEX EDGE IS SHORT HAND
domain =self._convert_domain()
domain.dimension = Dict(fields=edge.value)
return Dict(
name=edge.name,
allowNulls=False if edge.allowNulls is False else True,
domain=domain
)
domain = self._convert_domain(edge.domain)
return Dict(
name=coalesce(edge.name, edge.value),
value=edge.value,
range=edge.range,
allowNulls=False if edge.allowNulls is False else True,
domain=domain
)
开发者ID:klahnakoski,项目名称:MoDevETL,代码行数:31,代码来源:normal.py
示例12: json2value
def json2value(json_string, params={}, flexible=False, leaves=False):
"""
:param json_string: THE JSON
:param params: STANDARD JSON PARAMS
:param flexible: REMOVE COMMENTS
:param leaves: ASSUME JSON KEYS ARE DOT-DELIMITED
:return: Python value
"""
if isinstance(json_string, str):
Log.error("only unicode json accepted")
try:
if flexible:
# REMOVE """COMMENTS""", # COMMENTS, //COMMENTS, AND \n \r
# DERIVED FROM https://github.com/jeads/datasource/blob/master/datasource/bases/BaseHub.py# L58
json_string = re.sub(r"\"\"\".*?\"\"\"", r"\n", json_string, flags=re.MULTILINE)
json_string = "\n".join(remove_line_comment(l) for l in json_string.split("\n"))
# ALLOW DICTIONARY'S NAME:VALUE LIST TO END WITH COMMA
json_string = re.sub(r",\s*\}", r"}", json_string)
# ALLOW LISTS TO END WITH COMMA
json_string = re.sub(r",\s*\]", r"]", json_string)
if params:
# LOOKUP REFERENCES
json_string = expand_template(json_string, params)
try:
value = wrap(json_decoder(unicode(json_string)))
except Exception, e:
Log.error("can not decode\n{{content}}", content=json_string, cause=e)
if leaves:
value = wrap_leaves(value)
return value
开发者ID:klahnakoski,项目名称:TestFailures,代码行数:35,代码来源:convert.py
示例13: __init__
def __init__(self, **desc):
Domain.__init__(self, **desc)
self.type = "range"
self.NULL = Null
if self.partitions:
# IGNORE THE min, max, interval
if not self.key:
Log.error("Must have a key value")
parts = listwrap(self.partitions)
for i, p in enumerate(parts):
self.min = Math.min(self.min, p.min)
self.max = Math.max(self.max, p.max)
if p.dataIndex != None and p.dataIndex != i:
Log.error("Expecting `dataIndex` to agree with the order of the parts")
if p[self.key] == None:
Log.error("Expecting all parts to have {{key}} as a property", key=self.key)
p.dataIndex = i
# VERIFY PARTITIONS DO NOT OVERLAP, HOLES ARE FINE
for p, q in itertools.product(parts, parts):
if p.min <= q.min and q.min < p.max:
Log.error("partitions overlap!")
self.partitions = parts
return
elif any([self.min == None, self.max == None, self.interval == None]):
Log.error("Can not handle missing parameter")
self.key = "min"
self.partitions = wrap([{"min": v, "max": v + self.interval, "dataIndex": i} for i, v in enumerate(frange(self.min, self.max, self.interval))])
开发者ID:klahnakoski,项目名称:TestFailures,代码行数:32,代码来源:domains.py
示例14: write
def write(self, data):
if not self.parent.exists:
self.parent.create()
with open(self._filename, "wb") as f:
if isinstance(data, list) and self.key:
from pyLibrary.debugs.logs import Log
Log.error("list of data and keys are not supported, encrypt before sending to file")
if isinstance(data, list):
pass
elif isinstance(data, basestring):
data=[data]
elif hasattr(data, "__iter__"):
pass
for d in data:
if not isinstance(d, unicode):
from pyLibrary.debugs.logs import Log
Log.error("Expecting unicode data only")
if self.key:
f.write(crypto.encrypt(d, self.key).encode("utf8"))
else:
f.write(d.encode("utf8"))
开发者ID:klahnakoski,项目名称:MoTreeherder,代码行数:25,代码来源:files.py
示例15: send
def send(self, topic, message):
"""Publishes a pulse message to the proper exchange."""
if not message:
Log.error("Expecting a message")
message._prepare()
if not self.connection:
self.connect()
producer = Producer(
channel=self.connection,
exchange=Exchange(self.settings.exchange, type='topic'),
routing_key=topic
)
# The message is actually a simple envelope format with a payload and
# some metadata.
final_data = Dict(
payload=message.data,
_meta=set_default({
'exchange': self.settings.exchange,
'routing_key': message.routing_key,
'serializer': self.settings.serializer,
'sent': time_to_string(datetime.datetime.now(timezone(self.settings.broker_timezone))),
'count': self.count
}, message.metadata)
)
producer.publish(jsons.scrub(final_data), serializer=self.settings.serializer)
self.count += 1
开发者ID:klahnakoski,项目名称:MoDevETL,代码行数:32,代码来源:pulse.py
示例16: create
def create(self):
try:
os.makedirs(self._filename)
except Exception, e:
from pyLibrary.debugs.logs import Log
Log.error("Could not make directory {{dir_name}}", dir_name= self._filename, cause=e)
开发者ID:klahnakoski,项目名称:MoTreeherder,代码行数:7,代码来源:files.py
示例17: __init__
def __init__(
self,
exchange, # name of the Pulse exchange
topic, # message name pattern to subscribe to ('#' is wildcard)
target=None, # WILL BE CALLED WITH PULSE PAYLOADS AND ack() IF COMPLETE$ED WITHOUT EXCEPTION
target_queue=None, # (aka self.queue) WILL BE FILLED WITH PULSE PAYLOADS
host='pulse.mozilla.org', # url to connect,
port=5671, # tcp port
user=None,
password=None,
vhost="/",
start=0, # USED AS STARTING POINT FOR ASSIGNING THE _meta.count ATTRIBUTE
ssl=True,
applabel=None,
heartbeat=False, # True to also get the Pulse heartbeat message
durable=False, # True to keep queue after shutdown
serializer='json',
broker_timezone='GMT',
settings=None
):
self.target_queue = target_queue
self.pulse_target = target
if (target_queue == None and target == None) or (target_queue != None and target != None):
Log.error("Expecting a queue (for fast digesters) or a target (for slow digesters)")
Thread.__init__(self, name="Pulse consumer for " + settings.exchange, target=self._worker)
self.settings = settings
settings.callback = self._got_result
settings.user = coalesce(settings.user, settings.username)
settings.applabel = coalesce(settings.applable, settings.queue, settings.queue_name)
settings.topic = topic
self.pulse = ModifiedGenericConsumer(settings, connect=True, **settings)
self.count = coalesce(start, 0)
self.start()
开发者ID:klahnakoski,项目名称:MoDevETL,代码行数:35,代码来源:pulse.py
示例18: _convert_in
def _convert_in(op, term):
if not term:
Log.error("Expecting a term")
if not isinstance(term, Mapping):
Log.error("Expecting {{op}} to have dict value", op= op)
var, val = term.items()[0]
if isinstance(val, list):
v2 = [vv for vv in val if vv != None]
if len(v2) == 0:
if len(val) == 0:
return False
else:
return {"missing": {"field": var}}
if len(v2) == 1:
output = {"term": {var: v2[0]}}
else:
output = {"terms": {var: v2}}
if len(v2) != len(val):
output = {"or": [
{"missing": {"field": var}},
output
]}
return output
else:
return {"term": term}
开发者ID:klahnakoski,项目名称:Activedata-ETL,代码行数:29,代码来源:expressions.py
示例19: datetime2string
def datetime2string(value, format="%Y-%m-%d %H:%M:%S"):
try:
return value.strftime(format)
except Exception, e:
from pyLibrary.debugs.logs import Log
Log.error("Can not format {{value}} with {{format}}", value=value, format=format, cause=e)
开发者ID:klahnakoski,项目名称:TestFailures,代码行数:7,代码来源:convert.py
示例20: groupby
def groupby(data, keys=None, size=None, min_size=None, max_size=None, contiguous=False):
"""
return list of (keys, values) pairs where
group by the set of keys
values IS LIST OF ALL data that has those keys
contiguous - MAINTAIN THE ORDER OF THE DATA, STARTING THE NEW GROUP WHEN THE SELECTOR CHANGES
"""
if size != None or min_size != None or max_size != None:
if size != None:
max_size = size
return groupby_min_max_size(data, min_size=min_size, max_size=max_size)
if isinstance(data, Container):
return data.groupby(keys)
try:
keys = listwrap(keys)
get_key = jx_expression_to_function(keys)
if not contiguous:
data = sorted(data, key=get_key)
def _output():
for g, v in itertools.groupby(data, get_key):
group = Dict()
for k, gg in zip(keys, g):
group[k] = gg
yield (group, wrap(v))
return _output()
except Exception, e:
Log.error("Problem grouping", e)
开发者ID:klahnakoski,项目名称:esReplicate,代码行数:33,代码来源:group_by.py
注:本文中的pyLibrary.debugs.logs.Log类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论