Move the icu missing warning to after setting up the log handler.

(cherry picked from commit 6eb76c8af59ee15f618b44c0755bbdde4f72e222)
This commit is contained in:
John Ralls 2014-03-06 11:23:23 -08:00
parent bd23fce194
commit 89e394a690

View File

@ -36,6 +36,7 @@ import logging
LOG = logging.getLogger("." + __name__)
LOG.propagate = True
HAVE_ICU = False
_icu_err = None
_hdlr = None
# GrampsLocale initialization comes before command-line argument
# passing, so one must set the log level directly. The default is
@ -49,8 +50,10 @@ except ImportError:
from PyICU import Locale, Collator
HAVE_ICU = True
except ImportError as err:
LOG.warning("ICU not loaded because %s. Localization will be impaired. "
"Use your package manager to install PyICU", str(err))
# No logger, save the warning message for later.
_icu_err = ("ICU not loaded because %s. Localization will be impaired. "
"Use your package manager to install PyICU" % str(err))
ICU_LOCALES = None
if HAVE_ICU:
ICU_LOCALES = Locale.getAvailableLocales()
@ -377,6 +380,10 @@ class GrampsLocale(object):
_hdlr.setFormatter(logging.Formatter(fmt="%(name)s.%(levelname)s: %(message)s"))
LOG.addHandler(_hdlr)
#Now that we have a logger set up we can issue the icu error if needed.
if not HAVE_ICU:
LOG.warning(_icu_err)
# Even the first instance can be overridden by passing lang
# and languages to the constructor. If it isn't (which is the
# expected behavior), do platform-specific setup: