Skip to content

Commit

Permalink
Save log messages in target directory (#400)
Browse files Browse the repository at this point in the history
  • Loading branch information
landam authored Jun 5, 2024
1 parent c64c0c9 commit 7bc8925
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 19 deletions.
6 changes: 4 additions & 2 deletions bin/arcgis/SMODERP2D.pyt
Original file line number Diff line number Diff line change
Expand Up @@ -250,17 +250,19 @@ class SMODERP2D(object):

def execute(self, parameters, messages):
"""The source code of the tool."""
runner = None
try:
runner = ArcGisRunner()

runner.set_options(
self._get_input_params(parameters)
)

runner.run()
except ProviderError as e:
arcpy.AddError(e)

if runner is not None:
runner.finish()

return

@staticmethod
Expand Down
2 changes: 1 addition & 1 deletion bin/arcgis/SMODERP2D.pyt.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<metadata xml:lang="cs"><Esri><CreaDate>20230116</CreaDate><CreaTime>10441900</CreaTime><ArcGISFormat>1.0</ArcGISFormat><SyncOnce>TRUE</SyncOnce><ModDate>20240410</ModDate><ModTime>132913</ModTime></Esri><toolbox name="SMODERP2D" alias=""><arcToolboxHelpPath>e:\arcgis pro\Resources\Help\gp</arcToolboxHelpPath><toolsets/></toolbox><dataIdInfo><idCitation><resTitle>SMODERP2D</resTitle></idCitation></dataIdInfo><distInfo><distributor><distorFormat><formatName>ArcToolbox Toolbox</formatName></distorFormat></distributor></distInfo></metadata>
<metadata xml:lang="cs"><Esri><CreaDate>20230116</CreaDate><CreaTime>10441900</CreaTime><ArcGISFormat>1.0</ArcGISFormat><SyncOnce>TRUE</SyncOnce><ModDate>20240605</ModDate><ModTime>111141</ModTime></Esri><toolbox name="SMODERP2D" alias=""><arcToolboxHelpPath>c:\program files\arcgis\pro\Resources\Help\gp</arcToolboxHelpPath><toolsets/></toolbox><dataIdInfo><idCitation><resTitle>SMODERP2D</resTitle></idCitation></dataIdInfo><distInfo><distributor><distorFormat><formatName>ArcToolbox Toolbox</formatName></distorFormat></distributor></distInfo></metadata>
4 changes: 3 additions & 1 deletion bin/grass/batch_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

def run_process(params, epsg):
retcode = 0
runner = None
try:
runner = GrassGisRunner()
runner.create_location(f'EPSG:{epsg}')
Expand All @@ -19,7 +20,8 @@ def run_process(params, epsg):
print(f'ERORR: {e}', file=sys.stderr)
retcode = 1

runner.finish()
if runner is not None:
runner.finish()

return retcode

Expand Down
1 change: 0 additions & 1 deletion bin/grass/r.smoderp2d/r.smoderp2d.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@

try:
runner = GrassGisRunner()

runner.set_options(options)
runner.run()
runner.finish()
Expand Down
5 changes: 0 additions & 5 deletions bin/qgis/smoderp2d-plugin/smoderp_2D_dockwidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@
from qgis.gui import QgsMapLayerComboBox, QgsFieldComboBox

from smoderp2d.runners.qgis import QGISRunner
from smoderp2d.core.general import Globals, GridGlobals
from smoderp2d.providers import Logger
from smoderp2d.exceptions import ProviderError, ComputationAborted, MaxIterationExceeded
from bin.base import arguments, sections
Expand Down Expand Up @@ -106,10 +105,6 @@ def finished(self, result):
if self.runner:
self.runner.finish()

# resets
Globals.reset()
GridGlobals.reset()

iface.messageBar().findChildren(QtWidgets.QToolButton)[0].setHidden(
False
)
Expand Down
13 changes: 9 additions & 4 deletions smoderp2d/providers/base/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,15 +187,13 @@ def add_logging_handler(handler, formatter=None):
:param handler: logging handler to be registered
:param formatter: logging handler formatting
"""
if not formatter:
if formatter is None:
formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s "
"- [%(module)s:%(lineno)s]"
)
handler.setFormatter(formatter)
if len(Logger.handlers) == 0:
# avoid duplicated handlers (e.g. in case of ArcGIS)
Logger.addHandler(handler)
Logger.addHandler(handler)

def __load_hidden_config(self):
"""Load hidden configuration with advanced settings.
Expand Down Expand Up @@ -344,6 +342,13 @@ def load(self):
# cleanup output directory first
self._cleanup()

# log file need to be created after cleanup
file_logger = os.path.join(Globals.outdir, "smoderp2d.log")
self.add_logging_handler(
logging.FileHandler(file_logger)
)
Logger.debug(f'File logger set to {file_logger}')

data = None
if self.args.workflow_mode in (WorkflowMode.dpre, WorkflowMode.full):
try:
Expand Down
3 changes: 0 additions & 3 deletions smoderp2d/providers/base/data_preparation.py
Original file line number Diff line number Diff line change
Expand Up @@ -697,9 +697,6 @@ def _create_output_dir(self):
Logger.info(
"Creating output directories <{}>".format(Globals.outdir)
)
if os.path.exists(Globals.outdir):
shutil.rmtree(Globals.outdir)
os.makedirs(Globals.outdir)

# create temporary/control dir
for dir_name in ("temp", "control"):
Expand Down
11 changes: 10 additions & 1 deletion smoderp2d/runners/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import os
from abc import abstractmethod

from smoderp2d.core.general import Globals
from smoderp2d.core.general import Globals, GridGlobals
from smoderp2d.providers import Logger
from smoderp2d.providers.base import WorkflowMode
from smoderp2d.providers.base.exceptions import DataPreparationInvalidInput
Expand Down Expand Up @@ -108,3 +108,12 @@ def set_options(self, options):
:param options: options to be set by provider
"""
self._provider.set_options(options)

def finish(self):
"""Finish runner's operations."""
# reset handlers
Logger.handlers = []

# reset globals
Globals.reset()
GridGlobals.reset()
7 changes: 6 additions & 1 deletion smoderp2d/runners/grass.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

from smoderp2d.runners.base import Runner
from smoderp2d.providers import Logger
from smoderp2d.exceptions import ProviderError

class Popen(subprocess.Popen):
"""Avoid displaying cmd windows on MS Windows."""
Expand Down Expand Up @@ -62,10 +63,14 @@ def _find_grass_bin_path():
return grass_bin_path

def finish(self):
"""Close GRASS session."""
"""Finish runner's operations.
Close GRASS session."""
from grass.script import setup as gsetup
if self._grass_session:
self._grass_session.finish()

super().finish()

def _get_provider(self):
"""See base method for description.
Expand Down

0 comments on commit 7bc8925

Please sign in to comment.