based on log4cpp