#!/usr/bin/python

import log4py
import sys
from os import utime
from time import time

class Log4PyTest:

    def __init__(self):
        self.log4py = log4py.Logger().get_instance(self)

    def run(self):
        self.log4py.error("error")
        self.log4py.warn("warn")
        self.log4py.info("info")
        self.log4py.debug("debug")

    def output(self, message):
        self.log4py.info(message)

mytest = Log4PyTest()

print "\nSettings from log4py.conf\n"
mytest.run()

print "\nNormal level - Long format (written to $HOME/log4py-test.log)"
mytest.log4py.set_target("$HOME/log4py-test.log")
mytest.run()
mytest.log4py.set_target(sys.stdout)

print "\nNormal level - Long format (ansi color)\n"
mytest.log4py.set_use_ansi_codes(log4py.TRUE)
mytest.run()
mytest.log4py.set_use_ansi_codes(log4py.FALSE)

print "\nDebug level - Debug format\n"
mytest.log4py.set_formatstring(log4py.FMT_DEBUG)
mytest.log4py.set_loglevel(log4py.LOGLEVEL_DEBUG)
mytest.run()

print "\nVerbose level - Medium format\n"
mytest.log4py.set_formatstring(log4py.FMT_MEDIUM)
mytest.log4py.set_loglevel(log4py.LOGLEVEL_VERBOSE)
mytest.run()

print "\nVerbose level - User defined format\n"
mytest.log4py.set_formatstring("[ %u (%F) ] %D: %M")
mytest.log4py.set_loglevel(log4py.LOGLEVEL_VERBOSE)
mytest.run()

print "\nNormal, long format - Testing Nested Diagnostic Context\n"
mytest.log4py.set_formatstring(log4py.FMT_LONG)
mytest.log4py.set_loglevel(log4py.LOGLEVEL_VERBOSE)
mytest.log4py.push("ndc1")
mytest.output("Should say \"ndc1\"");
mytest.log4py.push("ndc2")
mytest.output("Should say \"ndc1 ndc2\"");
mytest.log4py.pop()
mytest.output("Should say \"ndc1\"");
mytest.log4py.push("ndc3")
mytest.output("Should say \"ndc1 ndc3\"");
mytest.log4py.clear_ndc();
mytest.output("Should not have any ndc items");

print "\nTesting MySQL target\n"
mytest.log4py.add_target(log4py.TARGET_MYSQL, "localhost", "syslog", "log4py", "mysecretpwd", "logs")
mytest.output("hello world")
mytest.log4py.remove_target(log4py.TARGET_MYSQL)

print "\nTesting Syslog target\n"
mytest.log4py.add_target(log4py.TARGET_SYSLOG)
mytest.run()
mytest.log4py.remove_target(log4py.TARGET_SYSLOG)

print "\nGetting all available targets\n"
print mytest.log4py.get_targets()

print "\nTesting log-file rotation (log4py-rotation.log)\n"
mytest.log4py.set_target("log4py-rotation.log")
mytest.run()
mytest.log4py.set_rotation(log4py.ROTATE_DAILY)
yesterday = time() - 60 * 60 * 24
utime("log4py-rotation.log", (yesterday, yesterday))
mytest.run()
mytest.log4py.set_target(sys.stdout)


syntax highlighted by Code2HTML, v. 0.9.1