def _logging_reset(self): """ Logging reset """ # Go # Ouch, this hack disable console logs (zzzz), status invocation now flush nothing... if self.vars and "action" in self.vars and self.vars["action"] in [ "status", "reload", "stop" ]: logger.debug( "Bypassing switch to logfile due to 'status|reload|stop' action" ) else: logger.debug( "Switching to logfile, you will lost console logs now") for h in logging.root.handlers: h.close() SolBase.logging_init( log_level=self._loglevel, force_reset=True, log_to_file=self.v_log_to_file, log_to_syslog=self.v_log_to_syslog, log_to_syslog_facility=self.v_log_to_syslog_facility, log_to_console=self.v_log_to_console, )
def setUp(self): """ Setup (called before each test) """ SolBase._reset() # Check self.assertFalse(SolBase._voodoo_initialized) self.assertFalse(SolBase._logging_initialized) # Initialize without logging SolBase.voodoo_init(init_logging=False) self.assertTrue(SolBase._voodoo_initialized) self.assertFalse(SolBase._logging_initialized) # Re-call => logging must kick in SolBase.voodoo_init() self.assertTrue(SolBase._voodoo_initialized) self.assertTrue(SolBase._logging_initialized) SolBase.logging_init("INFO", True) # Init self.lastMessage = None self.onLogCallCount = 0
def test_syslog(self): """ Test """ # Syslog is enabled by default SolBase.logging_init("INFO", True, log_callback=self._on_log) SolBase.set_compo_name("COMPO_XXX") # Emit a log self.onLogCallCount = 0 logger.info("TEST LOG 888") self.assertEqual(self.onLogCallCount, 1) self.assertIsNotNone(self.lastMessage) self.assertGreaterEqual(self.lastMessage.find("TEST LOG 888"), 0) self.assertGreaterEqual(self.lastMessage.find("COMPO_XXX:"), 0) self.assertGreaterEqual(self.lastMessage.find("| COMPO_XXX |"), 0) self.assertGreaterEqual( self.lastMessage.find(SolBase.get_machine_name() + " |"), 0) logger.info("Received ==> %s", repr(self.lastMessage)) # Emit a log (str) self.onLogCallCount = 0 logger.info(repr(u"BUF\u001B\u0BD9\U0001A10D\u1501FUB")) self.assertEqual(self.onLogCallCount, 1) self.assertIsNotNone(self.lastMessage) self.assertGreaterEqual(self.lastMessage.find("BUF"), 0) self.assertGreaterEqual(self.lastMessage.find("FUB"), 0) self.assertGreaterEqual(self.lastMessage.find("COMPO_XXX:"), 0) self.assertGreaterEqual(self.lastMessage.find("| COMPO_XXX |"), 0) self.assertGreaterEqual( self.lastMessage.find(SolBase.get_machine_name() + " |"), 0) logger.info("Received ==> %s", repr(self.lastMessage))
def tearDown(self): """ Setup (called on destroy) """ SolBase.logging_init(log_level='DEBUG', force_reset=True) Meters.write_to_logger() SolBase.logging_init(log_level='INFO', force_reset=True)
def test_log_to_file_time_file_seconds(self): """ Test """ log_file = "/tmp/pythonsol_unittest.log" # Clean if FileUtility.is_file_exist(log_file): os.remove(log_file) for f in glob.glob("/tmp/pythonsol_unittest.log.*"): os.remove(f) # Init SolBase.logging_init(log_level="INFO", log_to_file=log_file, log_to_console=True, log_to_syslog=False, log_callback=self._on_log, force_reset=True, log_to_file_mode="time_file_seconds") SolBase.set_compo_name("COMPO_XXX") # Emit a log logger.info("TEST LOG 888") # Emit a log (str) logger.info(u"BUF \u001B\u0BD9\U0001A10D\u1501\xc3 FUB") # Check the file buf = FileUtility.file_to_textbuffer(log_file, "utf-8") self.assertIsNotNone(buf) self.assertGreaterEqual(buf.find("TEST LOG 888"), 0) self.assertGreaterEqual(buf.find("BUF "), 0) self.assertGreaterEqual(buf.find(" FUB"), 0) self.assertGreaterEqual( buf.find(u"BUF \u001B\u0BD9\U0001A10D\u1501\xc3 FUB"), 0) # Wait 5 sec for i in range(0, 10): SolBase.sleep(1100) logger.info("Log i=%s", i) # Emit a log logger.info("TEST LOG 999") # We should have "pythonsol_unittest.log.*" but no more than 7 f_count = 0 for f in glob.glob("/tmp/pythonsol_unittest.log.*"): logger.info("Found %s", f) f_count += 1 self.assertGreater(f_count, 0) self.assertLessEqual(f_count, 7) # Reset SolBase.logging_init("INFO", True)
def test_log_to_file(self): """ Test """ log_file = "/tmp/pythonsol_unittest.log" # Clean if FileUtility.is_file_exist(log_file): os.remove(log_file) # Init SolBase.logging_init(log_level="INFO", log_to_file=log_file, log_to_console=True, log_to_syslog=False, log_callback=self._on_log, force_reset=True) SolBase.set_compo_name("COMPO_XXX") # Emit a log logger.info("TEST LOG 888") # Emit a log (str) logger.info(u"BUF \u001B\u0BD9\U0001A10D\u1501\xc3 FUB") # Check the file buf = FileUtility.file_to_textbuffer(log_file, "utf-8") self.assertIsNotNone(buf) self.assertGreaterEqual(buf.find("TEST LOG 888"), 0) self.assertGreaterEqual(buf.find("BUF "), 0) self.assertGreaterEqual(buf.find(" FUB"), 0) self.assertGreaterEqual( buf.find(u"BUF \u001B\u0BD9\U0001A10D\u1501\xc3 FUB"), 0) # Simulate a log rotate : kick the file and touch it os.remove(log_file) FileUtility.append_text_to_file(log_file, "TOTO\n", "utf-8", overwrite=False) # Re-emit logger.info("TEST LOG 999") buf = FileUtility.file_to_textbuffer(log_file, "utf-8") self.assertIsNotNone(buf) self.assertGreaterEqual(buf.find("TOTO"), 0) self.assertGreaterEqual(buf.find("TEST LOG 999"), 0)
def test_log_to_file_with_filter_greenlet(self): """ Test """ log_file = "/tmp/pythonsol_unittest.log" # Clean if FileUtility.is_file_exist(log_file): os.remove(log_file) # Init SolBase.logging_init(log_level="INFO", log_to_file=log_file, log_to_console=True, log_to_syslog=False, log_callback=self._on_log, force_reset=True) SolBase.set_compo_name("COMPO_XXX") # Go g1 = gevent.spawn(self._run_filter, "ip001") g2 = gevent.spawn(self._run_filter, "ip002") gevent.joinall([g1, g2]) # Re-read and check buf = FileUtility.file_to_textbuffer(log_file, "utf-8") self.assertGreaterEqual(buf.find("TEST LOG ip_addr=ip001"), 0) self.assertGreaterEqual(buf.find("TEST LOG ip_addr=ip002"), 0) # Via regex for r, b in [ ["TEST LOG ip_addr=ip001 | k_ip:ip001 z_value:ip001", True], ["TEST LOG ip_addr=ip002 | k_ip:ip002 z_value:ip002", True], ["TEST LOG ip_addr=ip001 | k_ip:ip002", False], ["TEST LOG ip_addr=ip002 | k_ip:ip001", False], ]: idx = buf.find(r) if b: self.assertLess(0, idx, r) else: self.assertGreaterEqual(0, idx, r)
def test_initfromfile(self): """ Test """ # Conf cf = dirname(abspath(__file__)) + os.sep + "logging.conf" # Default SolBase.logging_init("INFO", True) self.assertEqual( logging.getLevelName(logging.getLogger().getEffectiveLevel()), "INFO") # Load from file SolBase.logging_initfromfile(cf, False) self.assertEqual( logging.getLevelName(logging.getLogger().getEffectiveLevel()), "INFO") SolBase.logging_initfromfile(cf, True) self.assertEqual( logging.getLevelName(logging.getLogger().getEffectiveLevel()), "DEBUG")
def test_logging_init(self): """ Test """ SolBase.logging_init("INFO", True) self.assertEqual( logging.getLevelName(logging.getLogger().getEffectiveLevel()), "INFO") SolBase.logging_init("DEBUG", False) self.assertEqual( logging.getLevelName(logging.getLogger().getEffectiveLevel()), "INFO") SolBase.logging_init("DEBUG", True) self.assertEqual( logging.getLevelName(logging.getLogger().getEffectiveLevel()), "DEBUG") SolBase.logging_init("INFO", True) self.assertEqual( logging.getLevelName(logging.getLogger().getEffectiveLevel()), "INFO")
import logging import sys from pysolbase.SolBase import SolBase SolBase.logging_init("INFO") logger = logging.getLogger(__name__) sys.stdout = open('/tmp/log.txt', 'a') print('hey') logger.info("hey2") print("hey3") SolBase.logging_init("INFO", True) print('pd1') logger.info("pd2") print("pd2")
# # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # =============================================================================== """ import logging from pysolbase.FileUtility import FileUtility from pysolbase.SolBase import SolBase from pysoltcp.tcpserver.basefactory.TcpServerClientContextAbstractFactory import TcpServerClientContextAbstractFactory from pysoltcp.tcpserver.clientcontext.TcpServerClientContextFactory import TcpServerClientContextFactory SolBase.logging_init() logger = logging.getLogger(__name__) class TcpServerConfig(object): """ tcpserver configuration. If ssl is NOT enable, it is better that calls to sslCertificate/ssl_key_file should not happen. """ def __init__(self): """ Constructor. """ logger.debug("TcpServerConfig : Constructor called")
# Imports import logging import unittest from gevent import Greenlet from gevent.event import Event from pymysql import ProgrammingError from pysolbase.SolBase import SolBase from pysolmeters.AtomicInt import AtomicIntSafe from pysolmeters.Meters import Meters from pysolmysql.Mysql.MysqlApi import MysqlApi logger = logging.getLogger(__name__) SolBase.voodoo_init() SolBase.logging_init(log_level='INFO', force_reset=True) # noinspection PyBroadException,SqlNoDataSourceInspection,SqlResolve class TestMysqlApi(unittest.TestCase): """ Test description """ AR_CREATE_TABLES = [ """CREATE TABLE `t1` ( `server_id` VARCHAR(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; """, """CREATE TABLE `t2` ( `server_id` VARCHAR(255) NOT NULL