QGIS/python/plugins/processing/core/ProcessingLog.py

112 lines
3.7 KiB
Python
Raw Normal View History

2012-10-05 23:28:47 +02:00
# -*- coding: utf-8 -*-
"""
***************************************************************************
2013-08-12 20:44:27 +02:00
ProcessingLog.py
2012-10-05 23:28:47 +02:00
---------------------
Date : August 2012
Copyright : (C) 2012 by Victor Olaya
Email : volayaf at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""
__author__ = 'Victor Olaya'
__date__ = 'August 2012'
__copyright__ = '(C) 2012, Victor Olaya'
2012-10-05 23:28:47 +02:00
# This will get replaced with a git SHA1 when you do a git archive
2012-10-05 23:28:47 +02:00
__revision__ = '$Format:%H$'
import os
2012-09-15 18:25:25 +03:00
import codecs
import datetime
from processing.tools.system import userFolder
2013-08-12 20:44:27 +02:00
from processing.core.ProcessingConfig import ProcessingConfig
2016-04-22 10:38:48 +02:00
from qgis.PyQt.QtCore import QCoreApplication
LOG_SEPARATOR = '|~|'
class ProcessingLog:
DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
2012-09-15 18:25:25 +03:00
@staticmethod
def logFilename():
2016-01-15 11:18:48 +01:00
logFilename = userFolder() + os.sep + 'processing.log'
if not os.path.isfile(logFilename):
with codecs.open(logFilename, 'w', encoding='utf-8') as logfile:
logfile.write('Started logging at ' +
datetime.datetime.now().strftime(ProcessingLog.DATE_FORMAT) + '\n')
2016-01-15 11:18:48 +01:00
return logFilename
2012-09-15 18:25:25 +03:00
@staticmethod
def addToLog(msg):
try:
# It seems that this fails sometimes depending on the msg
# added. To avoid it stopping the normal functioning of the
# algorithm, we catch all errors, assuming that is better
2016-01-07 17:14:05 +01:00
# to miss some log info than breaking the algorithm.
line = 'ALGORITHM' + LOG_SEPARATOR + datetime.datetime.now().strftime(
ProcessingLog.DATE_FORMAT) + LOG_SEPARATOR \
+ msg + '\n'
with codecs.open(ProcessingLog.logFilename(), 'a',
encoding='utf-8') as logfile:
logfile.write(line)
2012-09-15 18:25:25 +03:00
except:
pass
@staticmethod
def getLogEntries():
entries = []
2016-01-15 11:18:48 +01:00
with open(ProcessingLog.logFilename()) as f:
lines = f.readlines()
for line in lines:
line = line.strip('\n').strip()
tokens = line.split(LOG_SEPARATOR)
if len(tokens) <= 1:
# try old format log separator
tokens = line.split('|')
text = ''
2012-09-15 18:25:25 +03:00
for i in range(2, len(tokens)):
text += tokens[i] + LOG_SEPARATOR
if line.startswith('ALGORITHM'):
entries.append(LogEntry(tokens[1], tokens[2]))
2012-09-15 18:25:25 +03:00
return entries
@staticmethod
def clearLog():
2013-08-12 20:44:27 +02:00
os.unlink(ProcessingLog.logFilename())
2012-09-15 18:25:25 +03:00
@staticmethod
def saveLog(fileName):
entries = ProcessingLog.getLogEntries()
with codecs.open(fileName, 'w', encoding='utf-8') as f:
for entry in entries:
2017-12-16 13:54:26 +10:00
f.write('ALGORITHM{}{}{}{}\n'.format(LOG_SEPARATOR, entry.date, LOG_SEPARATOR, entry.text))
@staticmethod
def tr(string, context=''):
if context == '':
context = 'ProcessingLog'
return QCoreApplication.translate(context, string)
class LogEntry:
2012-09-15 18:25:25 +03:00
def __init__(self, date, text):
self.date = date
self.text = text