You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

190 lines
3.8 KiB

// Module: Log4CPLUS
// File: clogger.cxx
// Created: 01/2011
// Author: Jens Rehsack
//
//
// Copyright 2011 Jens Rehsack & Tad E. Smith
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include <log4cplus/logger.h>
#include <log4cplus/clogger.h>
#include <log4cplus/appender.h>
#include <log4cplus/hierarchy.h>
#include <log4cplus/helpers/loglog.h>
#include <log4cplus/spi/loggerimpl.h>
#include <log4cplus/configurator.h>
#include <log4cplus/streams.h>
#include <log4cplus/helpers/snprintf.h>
#include <cerrno>
#include <cstdio>
#include <cstdarg>
#include <cstring>
#include <sstream>
using namespace log4cplus;
using namespace log4cplus::helpers;
LOG4CPLUS_EXPORT int
log4cplus_file_configure(const log4cplus_char_t *pathname)
{
if( !pathname )
return EINVAL;
try
{
PropertyConfigurator::doConfigure( pathname );
}
catch(std::exception const &)
{
return -1;
}
return 0;
}
LOG4CPLUS_EXPORT int
log4cplus_str_configure(const log4cplus_char_t *config)
{
if( !config )
return EINVAL;
try
{
tstring s(config);
tistringstream iss(s);
PropertyConfigurator pc(iss);
pc.configure();
}
catch(std::exception const &)
{
return -1;
}
return 0;
}
LOG4CPLUS_EXPORT int
log4cplus_basic_configure(void)
{
try
{
BasicConfigurator::doConfigure();
}
catch(std::exception const &)
{
return -1;
}
return 0;
}
LOG4CPLUS_EXPORT void
log4cplus_shutdown(void)
{
Logger::shutdown();
}
LOG4CPLUS_EXPORT int
log4cplus_logger_exists(const log4cplus_char_t *name)
{
int retval = false;
try
{
retval = Logger::exists(name);
}
catch(std::exception const &)
{
// Fall through.
}
return retval;
}
LOG4CPLUS_EXPORT int
log4cplus_logger_is_enabled_for(const log4cplus_char_t *name, loglevel_t ll)
{
int retval = false;
try
{
Logger logger = name ? Logger::getInstance(name) : Logger::getRoot();
retval = logger.isEnabledFor(ll);
}
catch(std::exception const &)
{
// Fall through.
}
return retval;
}
LOG4CPLUS_EXPORT int
log4cplus_logger_log(const log4cplus_char_t *name, loglevel_t ll,
const log4cplus_char_t *msgfmt, ...)
{
int retval = -1;
try
{
Logger logger = name ? Logger::getInstance(name) : Logger::getRoot();
if( logger.isEnabledFor(ll) )
{
std::va_list ap;
va_start(ap, msgfmt);
snprintf_buf buf;
const tchar * msg = buf.print_va_list(msgfmt, ap);
va_end(ap);
logger.forcedLog(ll, msg);
}
retval = 0;
}
catch(std::exception const &)
{
// Fall through.
}
return retval;
}
LOG4CPLUS_EXPORT int
log4cplus_logger_force_log(const log4cplus_char_t *name, loglevel_t ll, const log4cplus_char_t *msgfmt, ...)
{
int retval = -1;
try
{
Logger logger = name ? Logger::getInstance(name) : Logger::getRoot();
std::va_list ap;
va_start(ap, msgfmt);
snprintf_buf buf;
const tchar * msg = buf.print_va_list(msgfmt, ap);
va_end(ap);
logger.forcedLog(ll, msg);
retval = 0;
}
catch(std::exception const &)
{
// Fall through.
}
return retval;
}