blob: 7f3711e5e793675a35724739d4b29c576f315d7c [file] [log] [blame]
/***************************************************************************
consoleappender.cpp - class ConsoleAppender
-------------------
begin : mar avr 15 2003
copyright : (C) 2003 by Michael CATANZARITI
email : mcatan@free.fr
***************************************************************************/
/***************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* *
* This software is published under the terms of the Apache Software *
* License version 1.1, a copy of which has been included with this *
* distribution in the LICENSE.txt file. *
***************************************************************************/
#include <log4cxx/level.h>
#include <log4cxx/consoleappender.h>
#include <log4cxx/helpers/stringhelper.h>
#include <log4cxx/helpers/loglog.h>
using namespace log4cxx;
using namespace log4cxx::helpers;
tstring ConsoleAppender::SYSTEM_OUT = _T("System.out");
tstring ConsoleAppender::SYSTEM_ERR = _T("System.err");
ConsoleAppender::ConsoleAppender()
: target(SYSTEM_OUT)
{
os = &tcout;
}
ConsoleAppender::ConsoleAppender(LayoutPtr layout)
: target(SYSTEM_OUT)
{
this->layout = layout;
os = &tcout;
}
ConsoleAppender::ConsoleAppender(LayoutPtr layout, const tstring& target)
: target(SYSTEM_OUT)
{
this->layout = layout;
setTarget(target);
activateOptions();
}
ConsoleAppender::~ConsoleAppender()
{
finalize();
}
void ConsoleAppender::setTarget(const tstring& value)
{
tstring v = StringHelper::trim(value);
if (StringHelper::equalsIgnoreCase(SYSTEM_OUT, v))
{
target = SYSTEM_OUT;
}
else if (StringHelper::equalsIgnoreCase(SYSTEM_ERR, v))
{
target = SYSTEM_ERR;
}
else
{
targetWarn(value);
}
}
const tstring& ConsoleAppender::getTarget()
{
return target;
}
void ConsoleAppender::targetWarn(const tstring& val)
{
LogLog::warn(_T("[")+val+_T("] should be system.out or system.err."));
LogLog::warn(_T("Using previously set target, System.out by default."));
}
void ConsoleAppender::activateOptions()
{
if(StringHelper::equalsIgnoreCase(SYSTEM_OUT, target))
{
os = &tcout;
}
else if (StringHelper::equalsIgnoreCase(SYSTEM_ERR, target))
{
os = &tcerr;
}
}
void ConsoleAppender::setOption(const tstring& option, const tstring& value)
{
if (StringHelper::equalsIgnoreCase(_T("target"), option))
{
setTarget(value);
}
else
{
AppenderSkeleton::setOption(option, value);
}
}