| 1 | // boostLogger.cpp : Defines the entry point for the console application.
|
|---|
| 2 | //
|
|---|
| 3 |
|
|---|
| 4 | #include "stdafx.h"
|
|---|
| 5 | #include <stdio.h>
|
|---|
| 6 | #include <tchar.h>
|
|---|
| 7 | #include <fstream>
|
|---|
| 8 | #include <iomanip>
|
|---|
| 9 |
|
|---|
| 10 | #include <boost/log/trivial.hpp>
|
|---|
| 11 | #include <boost/log/core.hpp>
|
|---|
| 12 | #include <boost/log/expressions.hpp> // logging::trivial::severity
|
|---|
| 13 | #include <boost/log/sinks/sync_frontend.hpp>
|
|---|
| 14 | #include <boost/log/sinks/text_ostream_backend.hpp>
|
|---|
| 15 | #include <boost/log/sources/severity_logger.hpp>
|
|---|
| 16 | #include <boost/log/sources/severity_feature.hpp>
|
|---|
| 17 |
|
|---|
| 18 | #include <boost/log/attributes/constant.hpp>
|
|---|
| 19 |
|
|---|
| 20 | #include <boost/smart_ptr/shared_ptr.hpp>
|
|---|
| 21 | #include <boost/utility/empty_deleter.hpp>
|
|---|
| 22 |
|
|---|
| 23 | namespace logging = boost::log;
|
|---|
| 24 | namespace src = boost::log::sources;
|
|---|
| 25 | namespace keywords = boost::log::keywords;
|
|---|
| 26 | namespace sinks = boost::log::sinks;
|
|---|
| 27 |
|
|---|
| 28 | namespace attrs = boost::log::attributes;
|
|---|
| 29 | namespace expr = boost::log::expressions;
|
|---|
| 30 |
|
|---|
| 31 | static const unsigned int myWidth = 5;
|
|---|
| 32 | static const unsigned int headerWidth = 10;
|
|---|
| 33 |
|
|---|
| 34 | src::severity_logger_mt< logging::trivial::severity_level > lg;
|
|---|
| 35 | logging::trivial::severity_level mySev;
|
|---|
| 36 |
|
|---|
| 37 | void logGEMM( int m, int n, int k )
|
|---|
| 38 | {
|
|---|
| 39 | lg.add_attribute( "M", attrs::constant< int >( m ) );
|
|---|
| 40 | lg.add_attribute( "N", attrs::constant< int >( n ) );
|
|---|
| 41 | lg.add_attribute( "K", attrs::constant< int >( k ) );
|
|---|
| 42 |
|
|---|
| 43 | BOOST_LOG_SEV( lg, logging::trivial::trace );
|
|---|
| 44 |
|
|---|
| 45 | lg.remove_all_attributes( );
|
|---|
| 46 | }
|
|---|
| 47 |
|
|---|
| 48 | int _tmain(int argc, _TCHAR* argv[])
|
|---|
| 49 | {
|
|---|
| 50 | typedef sinks::synchronous_sink< sinks::text_ostream_backend > text_sink;
|
|---|
| 51 | boost::shared_ptr< text_sink > sink = boost::make_shared< text_sink >( );
|
|---|
| 52 |
|
|---|
| 53 | boost::shared_ptr< std::ostream > stream( &std::clog, boost::empty_deleter( ) );
|
|---|
| 54 | sink->locked_backend( )->add_stream( stream );
|
|---|
| 55 |
|
|---|
| 56 | boost::shared_ptr< logging::core > core = logging::core::get( );
|
|---|
| 57 |
|
|---|
| 58 | // BUG: This set_filter call affects the behavior of remove_all_attributes
|
|---|
| 59 | // BUG: Comment this out for correct logging behavior
|
|---|
| 60 | core->set_filter( logging::trivial::severity >= logging::trivial::trace );
|
|---|
| 61 |
|
|---|
| 62 | core->add_sink( sink );
|
|---|
| 63 |
|
|---|
| 64 | sink->set_formatter( expr::stream
|
|---|
| 65 | << std::setw( myWidth ) << "[ " << expr::attr< int >( "M" ) << " ] "
|
|---|
| 66 | << std::setw( myWidth ) << "[ " << expr::attr< int >( "N" ) << " ] "
|
|---|
| 67 | << std::setw( myWidth ) << "[ " << expr::attr< int >( "K" ) << " ] "
|
|---|
| 68 | << expr::smessage );
|
|---|
| 69 |
|
|---|
| 70 | float tmp = 1.0f;
|
|---|
| 71 |
|
|---|
| 72 | logGEMM( 1, 2, 3 );
|
|---|
| 73 | logGEMM( 4, 5, 6 );
|
|---|
| 74 | logGEMM( 7, 8, 9 );
|
|---|
| 75 |
|
|---|
| 76 | return 0;
|
|---|
| 77 | }
|
|---|