std{
< Type, _Traits> basic_logstream
{
init()
{
m_curLevel = ;
m_forbiddenLevel = ;
}
:
basic_ofstream<Type,_Traits> _MyFileStrem;
basic_ios<Type, _Traits> _MyBaseios;
basic_logstream<Type,_Traits> _Myos;
basic_ostream<Type,_Traits> _MyBasOs;
logmode
{
log_common = ,
log_html = ,
};
basic_logstream()
{
init();
}
basic_logstream( * _filename, append = ,logmode lmode= log_common)
{
init();
m_filestream.open(_filename,append,lmode);
}
open( * _filename, append = ,logmode lmode= log_common)
{
m_filestream.open(_filename,ios_base::out);
}
close()
{
m_filestream.close();
;
}
fail()
{
m_filestream.fail();
}
is_open()
{
m_filestream.is_open();
}
bad()
{
m_filestream.bad();
}
setstate(ios_base::iostate _state, _Expcept = )
{
m_filestream.setstate(_state,_Expcept);
}
setstate(ios_base::io_state _state)
{
m_filestream.setstate(_state);
}
clear(ios_base::iostate _state = ios_base::goodbit, _Expcept = )
{
m_filestream.clear(_state,_Expcept);
}
clear(ios_base::io_state _state)
{
m_filestream.clear(_state);
}
Type fill(Type _Newfill)
{
m_filestream.fill(_Newfill);
}
Type fill()
{
m_filestream.fill();
}
ios::fmtflags flags()
{
m_filestream.flags();
}
ios::fmtflags flags(ios::fmtflags _Newflags)
{
m_filestream.flush();
m_filestream.flags(_Newflags);
}
_Myos& flush()
{
m_filestream.flush();
*;
}
!()
{
!m_filestream;
}
* ()
{
(*)m_filestream;
}
opfx()
{
m_filestream.opfx();
}
osfx()
{
m_filestream.osfx();
}
streamsize precision()
{
m_filestream.precision();
}
streamsize precision(streamsize _NewPrecision)
{
m_filestream.precision(_NewPrecision);
}
streamsize width()
{
m_filestream.width();
}
streamsize width(streamsize _NewPrecision)
{
m_filestream.width(_NewPrecision);
}
< DataType>_Myos& <<(DataType data)
{
(m_curLevel >= m_forbiddenLevel)
{
m_filestream<<data;
}
*;
}
_Myos& <<(_MyBasOs& (__cdecl *_Pfn)(_MyBasOs&))
{
((*_Pfn)(m_filestream));
*;
}
_Myos& <<(_MyBaseios& (__cdecl *_Pfn)(_MyBaseios&))
{
(*_Pfn)(m_filestream);
(*);
}
_Myos& <<(ios_base& (__cdecl *_Pfn)(ios_base&))
{
(*_Pfn)(*(ios_base *));
(*);
}
set_forbidden_level( level)
{
m_forbiddenLevel = level;
}
set_level( level)
{
m_curLevel = level;
}
trace( * fmt, ...)
{
(m_curLevel >= m_forbiddenLevel)
{
buffer[];
args;
va_start(args, fmt);
_vsnprintf(buffer, , fmt, args);
va_end(args);
buffer[] = ;
OutputDebugStringA(buffer);
cout<<buffer;
m_filestream<<buffer;
}
}
trace( level, * fmt, ...)
{ (level >= m_forbiddenLevel)
{
buffer[];
args;
va_start(args, fmt);
_vsnprintf(buffer, , fmt, args);
va_end(args);
buffer[] = ;
OutputDebugStringA(buffer);
cout<<buffer;
m_filestream<<buffer;
}
}
:
_MyFileStrem m_filestream;
m_curLevel;
m_forbiddenLevel;
};
basic_logstream< , char_traits<> > logstream;
basic_logstream< , char_traits<> > wlogstream;
}