You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(6) |
Nov
(3) |
Dec
(20) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(22) |
Feb
(4) |
Mar
(3) |
Apr
(23) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(4) |
Nov
(2) |
Dec
|
2008 |
Jan
(2) |
Feb
|
Mar
(12) |
Apr
(7) |
May
(2) |
Jun
|
Jul
(2) |
Aug
(3) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
(2) |
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
(14) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(3) |
Dec
(1) |
2011 |
Jan
(8) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
|
Aug
(13) |
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
(7) |
Nov
|
Dec
|
From: Matthew W. <ma...@sy...> - 2015-10-27 21:23:54
|
Seems like compilation is fine now. You just need to link in the core and util libraries, and a front-end and a back-end. Matt --LongSig Dr Matthew D. Wilson Director - Synesis Software m: +61 410 442244 t: +61 2 9399 9136 tw: @synesissoftware e: ma...@sy... w: www.synesis.com.au Synesis Software Pty Ltd | Project Rescue | Software Team Management | Training | Software Architecture and Design | Custom Product Development | Solution Review | This communication is confidential and may contain legally privileged information. If you are not the named recipient, please contact us immediately. You must not copy, use or disclose this communication, or any attachments or information in it, without our consent. On 27 Oct 2015, at 11:13 pm, Devharsh Trivedi <dev...@gm...> wrote: > Thank you for your response, unfortunately that did not work. > > ---1--- > > Code: > pantheios::log_NOTICE(L"Hello world"); > > Errors: > Error 7 error LNK1120: 6 unresolved externals C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Debug\Pantheios.exe > Error 4 error LNK2019: unresolved external symbol _pantheios_exitProcess referenced in function "public: __thiscall pantheios_initialiser::pantheios_initialiser(void)" (??0pantheios_initialiser@@QAE@XZ) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj > Error 5 error LNK2019: unresolved external symbol _pantheios_init referenced in function "public: __thiscall pantheios_initialiser::pantheios_initialiser(void)" (??0pantheios_initialiser@@QAE@XZ) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj > Error 1 error LNK2019: unresolved external symbol _pantheios_isSeverityLogged referenced in function "int __cdecl pantheios::log_NOTICE<wchar_t const [12]>(wchar_t const (&)[12])" (??$log_NOTICE@$$BY0M@$$CB_W@pantheios@@YAHAAY0M@$$CB_W@Z) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj > Error 2 error LNK2019: unresolved external symbol _pantheios_log_1_no_test referenced in function "int __cdecl pantheios::internal::log_dispatch_1(int,unsigned int,wchar_t const *)" (?log_dispatch_1@internal@pantheios@@YAHHIPB_W@Z) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj > Error 6 error LNK2019: unresolved external symbol _pantheios_uninit referenced in function "public: __thiscall pantheios_initialiser::~pantheios_initialiser(void)" (??1pantheios_initialiser@@QAE@XZ) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj > Error 3 error LNK2019: unresolved external symbol _pantheios_util_strnlen referenced in function "private: static unsigned int __cdecl pantheios::pan_slice_t::calc_length_n_(wchar_t const *,unsigned int)" (?calc_length_n_@pan_slice_t@pantheios@@CAIPB_WI@Z) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj > > ---2--- > > Code: > pantheios::log_NOTICE("Hello world"); > > Errors: > Error 2 error C2665: 'stlsoft::winstl_project::c_str_data_w' : none of the 15 overloads could convert all the argument types d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp 9966 > Error 1 error C2665: 'stlsoft::winstl_project::c_str_len_w' : none of the 15 overloads could convert all the argument types d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp 9966 > > > > On Mon, Oct 26, 2015 at 11:42 PM, Matthew Wilson <st...@gm...> wrote: > I suspect you've created a Visual C++ project, which, by default, specifies wide-string (UNICODE). > > Either change that to Multibyte, or specify L"Hello world" > > HTH > > Matt > > > On Monday, October 26, 2015, Devharsh Trivedi <dev...@gm...> wrote: > Thank you sir now I am able to build. > > But I am getting following errors when trying to compile following program in Visual C++ 2010. > > Code: > #include "stdafx.h" > > #include <pantheios/pantheios.hpp> > > int main() > { > pantheios::log_NOTICE("Hello world"); > > return EXIT_SUCCESS; > } > > Error: > Error 2 error C2665: 'stlsoft::winstl_project::c_str_data_w' : none of the 15 overloads could convert all the argument types d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp 9966 > Error 1 error C2665: 'stlsoft::winstl_project::c_str_len_w' : none of the 15 overloads could convert all the argument types d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp 9966 > > > Any suggestions?? > > Regards. > > > On Sun, Oct 25, 2015 at 6:27 AM, Matthew Wilson <ma...@sy...> wrote: > Now fixed. See https://sourceforge.net/p/pantheios/news/2015/10/pantheios-101-beta-126-released/ > > Thanks > > Matt > ----- Original Message ----- > From: Devharsh Trivedi > To: pan...@li... > Sent: Thursday, October 22, 2015 5:26 PM > Subject: [Pantheios-users] build failed - fatal error /inserters.hpp > > visual studio 2010 > pantheios 1.0.1.215 > windows 7 64 bit > > error: > ..beta215\include\pantheios/inserters.hpp<149> : fatal error > C1189: #error : > NMAKE : fatal error U1077: '"..\VC\BIN\cl.exe"' : return code '0x2' > Stop. > > -- > DEVHARSH TRIVEDI > > > ------------------------------------------------------------------------------ > > > _______________________________________________ > Pantheios-users mailing list > Pan...@li... > https://lists.sourceforge.net/lists/listinfo/pantheios-users > > > > > > -- > DEVHARSH TRIVEDI > > > -- > > --LongSig > > Dr Matthew D. Wilson > > Director - Synesis Software > > m: +61 410 442244 > t: +61 2 9399 9136 > e: ma...@sy... > w: www.synesis.com.au > > Synesis Software Pty Ltd > > | Project Rescue | Software Team Management | Training | Software Architecture and Design | Custom Product Development | Solution Review | > > This communication is confidential and may contain legally privileged > information. If you are not the named recipient, please contact us > immediately. You must not copy, use or disclose this communication, > or any attachments or information in it, without our consent. > > > > -- > DEVHARSH TRIVEDI |
From: Devharsh T. <dev...@gm...> - 2015-10-27 12:13:15
|
Thank you for your response, unfortunately that did not work. ---1--- *Code:* pantheios::log_NOTICE(*L*"Hello world"); *Errors:* Error 7 error LNK1120: 6 unresolved externals C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Debug\Pantheios.exe Error 4 error LNK2019: unresolved external symbol _pantheios_exitProcess referenced in function "public: __thiscall pantheios_initialiser::pantheios_initialiser(void)" (??0pantheios_initialiser@@QAE@XZ) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj Error 5 error LNK2019: unresolved external symbol _pantheios_init referenced in function "public: __thiscall pantheios_initialiser::pantheios_initialiser(void)" (??0pantheios_initialiser@@QAE@XZ) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj Error 1 error LNK2019: unresolved external symbol _pantheios_isSeverityLogged referenced in function "int __cdecl pantheios::log_NOTICE<wchar_t const [12]>(wchar_t const (&)[12])" (??$log_NOTICE@$$BY0M@$$CB_W@pantheios@@YAHAAY0M@$$CB_W@Z) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj Error 2 error LNK2019: unresolved external symbol _pantheios_log_1_no_test referenced in function "int __cdecl pantheios::internal::log_dispatch_1(int,unsigned int,wchar_t const *)" (?log_dispatch_1@internal@pantheios@@YAHHIPB_W@Z) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj Error 6 error LNK2019: unresolved external symbol _pantheios_uninit referenced in function "public: __thiscall pantheios_initialiser::~pantheios_initialiser(void)" (??1pantheios_initialiser@@QAE@XZ) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj Error 3 error LNK2019: unresolved external symbol _pantheios_util_strnlen referenced in function "private: static unsigned int __cdecl pantheios::pan_slice_t::calc_length_n_(wchar_t const *,unsigned int)" (?calc_length_n_@pan_slice_t@pantheios@@CAIPB_WI@Z) C:\Users\310211146\Documents\Visual Studio 2010\Projects\Pantheios\Pantheios\Pantheios.obj ---2--- *Code:* pantheios::log_NOTICE("Hello world"); *Errors:* Error 2 error C2665: 'stlsoft::winstl_project::c_str_data_w' : none of the 15 overloads could convert all the argument types d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp 9966 Error 1 error C2665: 'stlsoft::winstl_project::c_str_len_w' : none of the 15 overloads could convert all the argument types d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp 9966 On Mon, Oct 26, 2015 at 11:42 PM, Matthew Wilson <st...@gm...> wrote: > I suspect you've created a Visual C++ project, which, by default, > specifies wide-string (UNICODE). > > Either change that to Multibyte, or specify L"Hello world" > > HTH > > Matt > > > On Monday, October 26, 2015, Devharsh Trivedi <dev...@gm...> > wrote: > >> Thank you sir now I am able to build. >> >> But I am getting following errors when trying to compile following >> program in Visual C++ 2010. >> >> Code: >> #include "stdafx.h" >> >> #include <pantheios/pantheios.hpp> >> >> int main() >> { >> pantheios::log_NOTICE("Hello world"); >> >> return EXIT_SUCCESS; >> } >> >> Error: >> Error 2 error C2665: 'stlsoft::winstl_project::c_str_data_w' : none >> of the 15 overloads could convert all the argument types >> d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp >> 9966 >> Error 1 error C2665: 'stlsoft::winstl_project::c_str_len_w' : none >> of the 15 overloads could convert all the argument types >> d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp >> 9966 >> >> >> Any suggestions?? >> >> Regards. >> >> >> On Sun, Oct 25, 2015 at 6:27 AM, Matthew Wilson <ma...@sy...> >> wrote: >> >>> Now fixed. See >>> https://sourceforge.net/p/pantheios/news/2015/10/pantheios-101-beta-126-released/ >>> >>> Thanks >>> >>> Matt >>> >>> ----- Original Message ----- >>> *From:* Devharsh Trivedi >>> *To:* pan...@li... >>> *Sent:* Thursday, October 22, 2015 5:26 PM >>> *Subject:* [Pantheios-users] build failed - fatal error /inserters.hpp >>> >>> visual studio 2010 >>> pantheios 1.0.1.215 >>> windows 7 64 bit >>> >>> error: >>> ..beta215\include\pantheios/inserters.hpp<149> : fatal error >>> C1189: #error : >>> NMAKE : fatal error U1077: '"..\VC\BIN\cl.exe"' : return code '0x2' >>> Stop. >>> >>> -- >>> DEVHARSH TRIVEDI >>> >>> ------------------------------ >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> ------------------------------ >>> >>> _______________________________________________ >>> Pantheios-users mailing list >>> Pan...@li... >>> https://lists.sourceforge.net/lists/listinfo/pantheios-users >>> >>> >> >> >> -- >> DEVHARSH TRIVEDI >> > > > -- > > --LongSig > > Dr Matthew D. Wilson > > Director - Synesis Software > > m: +61 410 442244 > t: +61 2 9399 9136 > e: ma...@sy... > w: www.synesis.com.au > > Synesis Software Pty Ltd > > | Project Rescue | Software Team Management | Training | Software > Architecture and Design | Custom Product Development | Solution Review | > > This communication is confidential and may contain legally privileged > information. If you are not the named recipient, please contact us > immediately. You must not copy, use or disclose this communication, > or any attachments or information in it, without our consent. > -- DEVHARSH TRIVEDI |
From: Matthew W. <st...@gm...> - 2015-10-26 18:12:54
|
I suspect you've created a Visual C++ project, which, by default, specifies wide-string (UNICODE). Either change that to Multibyte, or specify L"Hello world" HTH Matt On Monday, October 26, 2015, Devharsh Trivedi <dev...@gm...> wrote: > Thank you sir now I am able to build. > > But I am getting following errors when trying to compile following program > in Visual C++ 2010. > > Code: > #include "stdafx.h" > > #include <pantheios/pantheios.hpp> > > int main() > { > pantheios::log_NOTICE("Hello world"); > > return EXIT_SUCCESS; > } > > Error: > Error 2 error C2665: 'stlsoft::winstl_project::c_str_data_w' : none > of the 15 overloads could convert all the argument types > d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp > 9966 > Error 1 error C2665: 'stlsoft::winstl_project::c_str_len_w' : none > of the 15 overloads could convert all the argument types > d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp > 9966 > > > Any suggestions?? > > Regards. > > > On Sun, Oct 25, 2015 at 6:27 AM, Matthew Wilson <ma...@sy... > <javascript:_e(%7B%7D,'cvml','ma...@sy...');>> wrote: > >> Now fixed. See >> https://sourceforge.net/p/pantheios/news/2015/10/pantheios-101-beta-126-released/ >> >> Thanks >> >> Matt >> >> ----- Original Message ----- >> *From:* Devharsh Trivedi >> <javascript:_e(%7B%7D,'cvml','dev...@gm...');> >> *To:* pan...@li... >> <javascript:_e(%7B%7D,'cvml','pan...@li...');> >> *Sent:* Thursday, October 22, 2015 5:26 PM >> *Subject:* [Pantheios-users] build failed - fatal error /inserters.hpp >> >> visual studio 2010 >> pantheios 1.0.1.215 >> windows 7 64 bit >> >> error: >> ..beta215\include\pantheios/inserters.hpp<149> : fatal error >> C1189: #error : >> NMAKE : fatal error U1077: '"..\VC\BIN\cl.exe"' : return code '0x2' >> Stop. >> >> -- >> DEVHARSH TRIVEDI >> >> ------------------------------ >> >> >> ------------------------------------------------------------------------------ >> >> ------------------------------ >> >> _______________________________________________ >> Pantheios-users mailing list >> Pan...@li... >> <javascript:_e(%7B%7D,'cvml','Pan...@li...');> >> https://lists.sourceforge.net/lists/listinfo/pantheios-users >> >> > > > -- > DEVHARSH TRIVEDI > -- --LongSig Dr Matthew D. Wilson Director - Synesis Software m: +61 410 442244 t: +61 2 9399 9136 e: ma...@sy... w: www.synesis.com.au Synesis Software Pty Ltd | Project Rescue | Software Team Management | Training | Software Architecture and Design | Custom Product Development | Solution Review | This communication is confidential and may contain legally privileged information. If you are not the named recipient, please contact us immediately. You must not copy, use or disclose this communication, or any attachments or information in it, without our consent. |
From: Devharsh T. <dev...@gm...> - 2015-10-26 06:43:37
|
Thank you sir now I am able to build. But I am getting following errors when trying to compile following program in Visual C++ 2010. Code: #include "stdafx.h" #include <pantheios/pantheios.hpp> int main() { pantheios::log_NOTICE("Hello world"); return EXIT_SUCCESS; } Error: Error 2 error C2665: 'stlsoft::winstl_project::c_str_data_w' : none of the 15 overloads could convert all the argument types d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp 9966 Error 1 error C2665: 'stlsoft::winstl_project::c_str_len_w' : none of the 15 overloads could convert all the argument types d:\d3\pantheios-1.0.1-beta216\include\pantheios\internal\generated\log_sev_functions.hpp 9966 Any suggestions?? Regards. On Sun, Oct 25, 2015 at 6:27 AM, Matthew Wilson <ma...@sy...> wrote: > Now fixed. See > https://sourceforge.net/p/pantheios/news/2015/10/pantheios-101-beta-126-released/ > > Thanks > > Matt > > ----- Original Message ----- > *From:* Devharsh Trivedi <dev...@gm...> > *To:* pan...@li... > *Sent:* Thursday, October 22, 2015 5:26 PM > *Subject:* [Pantheios-users] build failed - fatal error /inserters.hpp > > visual studio 2010 > pantheios 1.0.1.215 > windows 7 64 bit > > error: > ..beta215\include\pantheios/inserters.hpp<149> : fatal error > C1189: #error : > NMAKE : fatal error U1077: '"..\VC\BIN\cl.exe"' : return code '0x2' > Stop. > > -- > DEVHARSH TRIVEDI > > ------------------------------ > > > ------------------------------------------------------------------------------ > > ------------------------------ > > _______________________________________________ > Pantheios-users mailing list > Pan...@li... > https://lists.sourceforge.net/lists/listinfo/pantheios-users > > -- DEVHARSH TRIVEDI |
From: Matthew W. <ma...@sy...> - 2015-10-25 01:28:16
|
Now fixed. See https://sourceforge.net/p/pantheios/news/2015/10/pantheios-101-beta-126-released/ Thanks Matt ----- Original Message ----- From: Devharsh Trivedi To: pan...@li... Sent: Thursday, October 22, 2015 5:26 PM Subject: [Pantheios-users] build failed - fatal error /inserters.hpp visual studio 2010 pantheios 1.0.1.215 windows 7 64 bit error: ..beta215\include\pantheios/inserters.hpp<149> : fatal error C1189: #error : NMAKE : fatal error U1077: '"..\VC\BIN\cl.exe"' : return code '0x2' Stop. -- DEVHARSH TRIVEDI ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ _______________________________________________ Pantheios-users mailing list Pan...@li... https://lists.sourceforge.net/lists/listinfo/pantheios-users |
From: Matthew W. <ma...@sy...> - 2015-10-22 21:18:01
|
This looks like a mistake in the release process. Apologies for that. Please delete the offending line. I will release a new version soon. --LongSig Dr Matthew D. Wilson Director - Synesis Software m: +61 410 442244 t: +61 2 9399 9136 tw: @synesissoftware e: ma...@sy... w: www.synesis.com.au Synesis Software Pty Ltd | Project Rescue | Software Team Management | Training | Software Architecture and Design | Custom Product Development | Solution Review | This communication is confidential and may contain legally privileged information. If you are not the named recipient, please contact us immediately. You must not copy, use or disclose this communication, or any attachments or information in it, without our consent. On 22 Oct 2015, at 5:26 pm, Devharsh Trivedi <dev...@gm...> wrote: > visual studio 2010 > pantheios 1.0.1.215 > windows 7 64 bit > > error: > ..beta215\include\pantheios/inserters.hpp<149> : fatal error > C1189: #error : > NMAKE : fatal error U1077: '"..\VC\BIN\cl.exe"' : return code '0x2' > Stop. > > -- > DEVHARSH TRIVEDI > ------------------------------------------------------------------------------ > _______________________________________________ > Pantheios-users mailing list > Pan...@li... > https://lists.sourceforge.net/lists/listinfo/pantheios-users |
From: Devharsh T. <dev...@gm...> - 2015-10-22 06:26:10
|
visual studio 2010 pantheios 1.0.1.215 windows 7 64 bit error: ..beta215\include\pantheios/inserters.hpp<149> : fatal error C1189: #error : NMAKE : fatal error U1077: '"..\VC\BIN\cl.exe"' : return code '0x2' Stop. -- DEVHARSH TRIVEDI |
From: Matt W. <st...@gm...> - 2015-09-27 23:22:44
|
Pantheios 1.0.1 beta 215 introduces the showPlus format flag, which causes leading pluses to be applied to integers (just as leading minuses will appear for negative numbers). It is used as follows: #include #include int main() { pan::log_INFORMATIONAL("log -10:"); pan::log_INFORMATIONAL("without showPlus: '", pan::i(-10), "'"); pan::log_INFORMATIONAL("with showPlus: '", pan::i(-10, 0, pan::fmt::showPlus), "'"); pan::log_INFORMATIONAL("----------\n"); pan::log_INFORMATIONAL("log +10:"); pan::log_INFORMATIONAL("without showPlus: '", pan::i(+10), "'"); pan::log_INFORMATIONAL("with showPlus: '", pan::i(+10, 0, pan::fmt::showPlus), "'"); pan::log_INFORMATIONAL("----------\n"); pan::log_INFORMATIONAL("log -10 into 10-width:"); pan::log_INFORMATIONAL("without showPlus: '", pan::i(-10, 10, 0), "'"); pan::log_INFORMATIONAL("with showPlus: '", pan::i(-10, 10, pan::fmt::showPlus), "'"); pan::log_INFORMATIONAL("----------\n"); pan::log_INFORMATIONAL("log +10 into 10-width:"); pan::log_INFORMATIONAL("without showPlus: '", pan::i(+10, 10, 0), "'"); pan::log_INFORMATIONAL("with showPlus: '", pan::i(+10, 10, pan::fmt::showPlus), "'"); pan::log_INFORMATIONAL("----------\n"); pan::log_INFORMATIONAL("log -10 into 10-width left-justified:"); pan::log_INFORMATIONAL("without showPlus: '", pan::i(-10, -10, 0), "'"); pan::log_INFORMATIONAL("with showPlus: '", pan::i(-10, -10, pan::fmt::showPlus), "'"); pan::log_INFORMATIONAL("----------\n"); pan::log_INFORMATIONAL("log +10 into 10-width left-justified:"); pan::log_INFORMATIONAL("without showPlus: '", pan::i(+10, -10, 0), "'"); pan::log_INFORMATIONAL("with showPlus: '", pan::i(+10, -10, pan::fmt::showPlus), "'"); pan::log_INFORMATIONAL("----------\n"); return 0; } PANTHEIOS_EXTERN_C PAN_CHAR_T const PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("test.scratch.showPlus.integer"); which gives the output: [test.scratch.showPlus.integer...]: log -10: [test.scratch.showPlus.integer...]: without showPlus: '-10' [test.scratch.showPlus.integer...]: with showPlus: '-10' [test.scratch.showPlus.integer...]: ---------- [test.scratch.showPlus.integer...]: log +10: [test.scratch.showPlus.integer...]: without showPlus: '10' [test.scratch.showPlus.integer...]: with showPlus: '+10' [test.scratch.showPlus.integer...]: ---------- [test.scratch.showPlus.integer...]: log -10 into 10-width: [test.scratch.showPlus.integer...]: without showPlus: ' -10' [test.scratch.showPlus.integer...]: with showPlus: ' -10' [test.scratch.showPlus.integer...]: ---------- [test.scratch.showPlus.integer...]: log +10 into 10-width: [test.scratch.showPlus.integer...]: without showPlus: ' 10' [test.scratch.showPlus.integer...]: with showPlus: ' +10' [test.scratch.showPlus.integer...]: ---------- [test.scratch.showPlus.integer...]: log -10 into 10-width left-justified: [test.scratch.showPlus.integer...]: without showPlus: '-10 ' [test.scratch.showPlus.integer...]: with showPlus: '-10 ' [test.scratch.showPlus.integer...]: ---------- [test.scratch.showPlus.integer...]: log +10 into 10-width left-justified: [test.scratch.showPlus.integer...]: without showPlus: '10 ' [test.scratch.showPlus.integer...]: with showPlus: '+10 ' [test.scratch.showPlus.integer...]: ---------- -- Posted By Matt Wilson to Pantheios Tips 'n' Tricks at 9/27/2015 04:14:00 PM |
From: Matt W. <st...@gm...> - 2015-09-27 09:24:00
|
Pantheios is an open source C/C++ Logging API library, offering an optimal combination of 100% type-safety, efficiency, genericity and extensibility. It is simple to use and extend, highly-portable (platform and compiler-independent) and, best of all, it upholds the C tradition of you only pay for what you use. Pantheios supports logging of message statements of arbitrary complexity, consisting of heterogeneous types. Pantheios supports filtering of log messages based on severity level including (but not limited to) the eight levels defined by the SysLog protocol. Pantheios supports back-end output, individually and in combination, to stderr/stdout, SysLog (including a custom implementation of the SysLog protocol for Windows), Windows debugger, Windows event log, COM Error Object, Speech, or any custom back-end extension you care to write. Importantly, Pantheios is readily extended to use the existing transport mechanisms of feature-rich logging libraries such as ACE, log4cpp, log4cplus, log4cxx. Pantheios does not contain any compiler-specific or platform-specific constructs. It supports UNIX (including Linux and Mac OS-X), and Windows, and should work with any operating system. It is known to be compatible with Borland (5.6+), Clang, Comeau (4.3.3+), Digital Mars (8.45+), GCC (3.4+), Intel (7+), Metrowerks (8+), Microsoft Visual C++ (6.0+), and should work with any reasonably modern C++ compiler. Pantheios is completely free and includes source released under a BSD-style license. Commercial servics, including bespoke customisations, are available from Synesis Software Pty Ltd; http://synesis.com.au/contact.html Pantheios Training is provided by Synesis Software Pty Ltd; details at http://synesis.com.au/training.html Release 1.0.1 beta 215 incorporates: * added interval inserter * added stream_character inserter * Clang-compatibility * VC++ 11-compatibility * VC++ 12-compatibility * VC++ 14-compatibility * showPlus format flag support in pantheios::integer (pan::i) * makefiles customisable to specify non-bundled locations of b64, shwild, xContract, xCover, and xTests libraries (useful to getting head from GitHub) * NOTE: Now requires STLSoft 1.9.121 Download from: https://sourceforge.net/projects/pantheios/files/Pantheios%20%28C%20and%20Cxx%29/ Discuss at: https://sourceforge.net/projects/pantheios/forums/forum/475313 Pantheios website: http://pantheios.org/ Note: this release of Pantheios requires STLSoft 1.9.121, or later; download from http://stlsoft.org/ -- Posted By Matt Wilson to Pantheios Tips 'n' Tricks at 9/27/2015 01:24:00 AM |
From: Matt W. <st...@gm...> - 2015-09-27 09:13:43
|
Pantheios GitHub access now at: Pantheios - main C/C++ library; Pantheios.Extras.DiagUtil - a suite of functions that aid diagnostics; Pantheios.Extras.Main - which provides a suite of functions that simplify the implementation of main() ; and Pantheios.Extras.xHelpers - a suite of free-function templates that simplify the implementation of non-throwing APIs. Fork away! -- Posted By Matt Wilson to Pantheios Tips 'n' Tricks at 9/27/2015 01:43:00 AM |
From: Adi S. <adi...@gm...> - 2014-02-04 12:28:03
|
Hi! Has anyone managed to build Pantheios with the Android NDK for use with JNI code? I've written a custom back-end that uses the Android Logging API<http://mobilepearls.com/labs/native-android-api/#logging>, but I don't know how to get the library itself to build. Thanks, Adi |
From: Norman G. <no...@te...> - 2013-08-12 08:15:39
|
I'd like to confirm I am on the write track in implementing a logger that will split to the screen and a disk file. The libraries to link with are -lpantheios.1.core.gcc46.mt.debug -lmy_new_be -lpantheios.1.bec.fprintf.gcc46.mt.debug -lpantheios.1.bec.file.gcc46.mt.debug -lpantheios.1.fe.simple.gcc46.mt.debug -lpantheios.1.util.gcc46.mt.debug and I would need to write the three methods: |pantheios_be_init()| |pantheios_be_uninit() | |pantheios_be_logEntry()| that comprise the new library my_new_be.a . Is the order of linking, above, correct? Does backend already exist? Is the lrsplit example the closest example to what I want to do? Thank you! |
From: Norman G. <no...@te...> - 2013-08-12 08:03:47
|
Is there a pause/resume api that targets a specified backend? For example, if I am logging to the screen, I may want to turn off the logging for a while, and then turn it back on, while not affecting the logging that is being sent to a disk file. |
From: Norman G. <no...@te...> - 2013-08-12 08:00:59
|
I understand that pantheios initializes by default before main starts up, so that early errors can get logged. In the case of logging to the screen, this makes sense. But, if logging to file, before the file path is set, what happens, then? |
From: Matt W. <st...@gm...> - 2012-05-21 10:34:55
|
To anyone who's still following any of my public works - FastFormat, Pantheios, STLSoft, Breaking Up The Monolith, Quality Matters, VOLE, etc. - and wondering whether these activities are permanently moribund, I want to let you know that I'll soon be free of a very intense and overwhelmingly consuming commercial engagement over the last 2.5 years, and the second half of this year should see much activity in open-source, commercial, and writing activities. Cheers Matt -- Posted By Matt Wilson to Pantheios Tips 'n' Tricks at 5/21/2012 03:34:00 AM |
From: Michael S. <dom...@gm...> - 2011-08-28 03:46:51
|
Hi Matt, First, just a quick comment. I said that I pined for something simpler that maybe uses macros for the front end. These macros would expand to an if statement that checks the log level and then determines whether to execute the line(s) of code that actually create the log entry. So, this might be considered a "front-front end". I figured this would be about the fastest thing one could do when the log entry is actually not going to be logged. I wrote a small test app with a loop iterating 100K times and with the log level set higher than the log entry to cause no logging to actually occur. My macro approach came out around 80 microseconds, and Pantheios came out around 95 microseconds. I was quite surprised at how fast Pantheios is for this case given the amount of code that I've stepped through in the debugger. Maybe it's a case of the compiler optimizing/inlining various function calls, etc., but anyway kudos to you for this phenomenally performant library. As you state somewhere in the documentation, one great feature of Pantheios is that I can now put log entries all over the place in my code without having to worry about them affecting the performance of the app if they are not actually logged. Now, one answer to your answer :o). You said: "I've always thought the compilation error messages were pretty good, but then I suffer from selection bias on my own library. I'd really like to hear more about what you don't like about this, and maybe address that. If you can post the output next time that happens, along with saying what's hard to understand, that'd be great." As I mentioned, if I inadvertently include a fundamental type in a log message without wrapping it in an conversion shim, then I get compilation errors which do not lead me to the line where the duff log entry exists but rather lead me to a macro in the Pantheios source. I still primarily use MSVC 7.1 for C++ work, which may be part of the problem :o). Below is some simple source that reproduces the problem for me. My logging.h header is uninteresting, it includes the Pantheios headers (including implicit link ones), defines the process identity, and has some macros and typedef such as "typedef pantheios::integer panint" to make for less typing. The source below has a single line that logs a constant ANSI string, an int, and a float. I get two compiler errors from the int and two from the float. My problem is that if I double-click on any of these errors in the IDE, instead of being taken to the line in LogTest.cpp where I wrote the bad log entry, instead I'm taken to line 14071 in the file log_sev_functions.hpp from the Pantheios source. This line is a macro " , PANTHEIOS_INVOKE_SHIM_PAIR_(v1)". I then have absolutely no way to determine where my bad log entry is other than searching for everything I think I've changed/added, reviewing all log entries (of which there can be hundreds or thousands), etc. As you can imagine, this can be quite frustrating at times. I'm getting better about remembering to wrap things, but when I was first getting started I had a few cases where it took me maybe close to an hour to find all of the bad log entries I had written since the last compilation. Even in log_sev_functions.hpp, you have the comment below starting on line 14060, so I guess you are aware of what I'm talking about? // NOTE: if one of the following lines causes a compile error, // you have passed a fundamental type to the log_DEBUG() statement. **************************************************************************** ************** Source // file LogTest.cpp #include "logging.h" int _tmain(int argc, _TCHAR* argv[]) { int i = 7; float f = 23.888F; pantheios_fe_simple_setSeverityCeiling(pantheios::SEV_DEBUG); log_DEBUG("the numbers are: ", i, ", ", f, "\n"); return 0; } Compilation Errors 1) c:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\internal\ge nerated\log_sev_functions.hpp(14071): error C2665: 'pantheios::shims::c_str_len_a' : none of the 21 overloads can convert parameter 1 from type 'const int' 2) c:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\internal\ge nerated\log_sev_functions.hpp(14071): error C2665: 'pantheios::shims::c_str_data_a' : none of the 21 overloads can convert parameter 1 from type 'const int' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\r eal.hpp(200): could be 'const char *pantheios::shims::c_str_data_a(const pantheios::real &)' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\p ointer.hpp(184): or 'const char *pantheios::shims::c_str_data_a(const pantheios::pointer &)' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\i nteger.hpp(414): or 'const char *pantheios::shims::c_str_data_a(const pantheios::integer &)' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\a rgs.hpp(243): or 'const char *pantheios::shims::c_str_data_a(const pantheios::args &)' C:\CPPProjects\stlsoft-1.9.109\include\winstl\shims\access\string\time.hpp(4 42): or 'stlsoft::basic_shim_string<C> stlsoft::winstl_project::c_str_data_a(const SYSTEMTIME &)' with [ C=stlsoft::ss_char_a_t ] C:\CPPProjects\stlsoft-1.9.109\include\winstl\shims\access\string\time.hpp(4 76): or 'stlsoft::basic_shim_string<C> stlsoft::winstl_project::c_str_data_a(const FILETIME &)' with [ C=stlsoft::ss_char_a_t ] 3) c:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\internal\ge nerated\log_sev_functions.hpp(14073): error C2665: 'pantheios::shims::c_str_len_a' : none of the 21 overloads can convert parameter 1 from type 'const float' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\r eal.hpp(215): could be 'size_t pantheios::shims::c_str_len_a(const pantheios::real &)' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\p ointer.hpp(199): or 'size_t pantheios::shims::c_str_len_a(const pantheios::pointer &)' 4) c:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\internal\ge nerated\log_sev_functions.hpp(14073): error C2665: 'pantheios::shims::c_str_data_a' : none of the 21 overloads can convert parameter 1 from type 'const float' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\r eal.hpp(200): could be 'const char *pantheios::shims::c_str_data_a(const pantheios::real &)' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\p ointer.hpp(184): or 'const char *pantheios::shims::c_str_data_a(const pantheios::pointer &)' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\i nteger.hpp(414): or 'const char *pantheios::shims::c_str_data_a(const pantheios::integer &)' C:\CPPProjects\Logging\pantheios-1.0.1-beta212\include\pantheios\inserters\a rgs.hpp(243): or 'const char *pantheios::shims::c_str_data_a(const pantheios::args &)' C:\CPPProjects\stlsoft-1.9.109\include\winstl\shims\access\string\time.hpp(4 42): or 'stlsoft::basic_shim_string<C> stlsoft::winstl_project::c_str_data_a(const SYSTEMTIME &)' with [ C=stlsoft::ss_char_a_t ] C:\CPPProjects\stlsoft-1.9.109\include\winstl\shims\access\string\time.hpp(4 76): or 'stlsoft::basic_shim_string<C> stlsoft::winstl_project::c_str_data_a(const FILETIME &)' with [ C=stlsoft::ss_char_a_t ] C:\CPPProjects\stlsoft-1.9.109\include\winstl\shims\access\string\time.hpp(5 08): or 'stlsoft::basic_shim_string<C> stlsoft::winstl_project::c_str_data_a(const UDATE &)' with [ C=stlsoft::ss_char_a_t ] C:\CPPProjects\stlsoft-1.9.109\include\winstl\shims\access\string\HWND.hpp(5 29): or 'stlsoft::winstl_project::c_str_ptr_HWND_proxy<C> stlsoft::winstl_project::c_str_data_a(HWND)' with [ C=stlsoft::winstl_project::ws_char_a_t ] C:\CPPProjects\stlsoft-1.9.109\include\comstl\ From: Matthew Wilson [mailto:ma...@sy...] Sent: Wednesday, August 24, 2011 2:00 AM To: Michael Stephenson; 'Phanthos Desenvolvimento'; pan...@li... Subject: Re: [Pantheios-users] File Back-End Michael Thanks for adding to the thread. My answers to your points. 1. As I mentioned in my response to Panthos, that's something that I've planned, and partially implemented, just not had time/impetus to complete. If a user wanted to sponsor its inclusion after October, that's bear fruit I'm sure. =P. (To be honest, if enough users make fresh requests for it, it's also reasonably likely to feature in the 1.0 final release, due Dec/Jan.) 2. Again, as mentioned in my response to Panthos, the fact that you have to be explicit is not for lack of wit on my part: you can see just those facilities in FastFormat, Pantheios' sister (brother?) library. It's because (I believe that) a diagnostic logging library must be 100% type-safe, and must never of itself be a cause for failure (other than impossible-to-avoid things, such as out-of-memory - and I've even got plans on limiting that ... maybe in 1.1 next year). For sure, it's tiresome to write pantheios::integer(x) - although a bit less tiresome to write pan::i(x) - but that's orders of magnitude less tiresome than having the untestable log statement, from that branch of code that is so unlikely to happen, fail when the application does something extremely rare, leaving you with no clear idea of what caused the problem, and possibly no way to reproduce it. I've always thought the compilation error messages were pretty good, but then I suffer from selection bias on my own library. I'd really like to hear more about what you don't like about this, and maybe address that. If you can post the output next time that happens, along with saying what's hard to understand, that'd be great. 3. I've done commercial back-ends for clients that do similar things. Also front-ends that allow fine-grained control of filtering at runtime. It can be challenging to get right, and anticipate all cases, but very interesting to do. HTH Matt ----- Original Message ----- From: Michael Stephenson <mailto:dom...@gm...> To: 'Phanthos Desenvolvimento' <mailto:pha...@gm...> ; pan...@li... Sent: Wednesday, August 24, 2011 2:23 PM Subject: Re: [Pantheios-users] File Back-End My take. 1 - What does that mean in the be.file specific case? For one thing, it means you don't get things like rolling log files that roll over after a time period or a file size and other niceties like that. Actually that's about the only nicety that I miss. I've implemented some things like function entry/exit myself on top of Pantheios, but mostly I don't miss the rest of the fluff that log4xxx libraries provide. 2 - What kind of flaws or limitations will I face using this back-end? I can't think of any per se except for #1 above. My only complaints are probably due to a lack of understanding or due diligence on my part. It's a little painful to generate log entries with data types that Pantheious isn't set up to handle; e.g., having to wrap ints in panint(). I've had some confusion about Unicode. My main complaint is that if, for example, I write a line of code to log something and forget to wrap an int in panint(), then I get an error at comple time but the error line (I use MSVC) is some macro that gives me absolutely no clue as to the line of code where the invalid log entry is actually located. It can thus be quite a hunt and quite tedious to find the rogue log entry(ies), especially if I've written a lot of code and a lot of logging code between the last time I compiled. Again, these items are probably my lack of understanding; I basically got it working enough that I was happy with it and haven't had/taken the time to revisit how things work. Personally I do pine for something a bit simpler that basically uses macros that expand to if statements based on the current log level for the front end and FastFormat for generating the strings for the log entries efficiently to be handed off to the back end. I do like the front end/back end separation. 3 - When my log is written on the disc? Is it possible that I could lose log messages in the case of a segmentation fault or any other abnormal proccess termination? Your log entries are written whenever the OS flushes the file writes to disk. Yes, if your process terminates abnormally, you will lose any log entries that haven't been flushed to disk. There is a somewhat newish function in Pantheios that forces flushing to disk. I've had to use this ad-hoc on occasion when my app was crashing and I was losing the last several entries that led to the crash. It will slow things down considerably if you use it much at all. Sorry, can't remember offhand what the function is called. By the way, this is probably true of about any logging library. The way that I've been able to work around it is to have a separate child process with an inter-process queue using shared memory so that the log entries are copied to the child process almost immediately and subsequently written to disk even if the main process crashes. I haven't done this with Panetheios at this point; what would be required would be a back end that works as just described. From: Phanthos Desenvolvimento [mailto:pha...@gm...] Sent: Tuesday, August 23, 2011 11:59 PM To: pan...@li... Subject: [Pantheios-users] File Back-End Hi, as you may have noticed i just started using Pantheios and now I have some simple doubts. I was reading my way to find a way of logging everything to a file, so I naturally started using be.file . But I found this post -> http://blog.pantheios.org/search/label/stock%20back-ends where it is written: "stock back-ends are intended for tutorial or simple program purposes. More sophisticated logging should be provided by having Pantheios delegate its transport to a fully-fledged logging library." 1 - What does that mean in the be.file specific case? 2 - What kind of flaws or limitations will I face using this back-end? 3 - When my log is written on the disc? Is it possible that I could lose log messages in the case of a segmentation fault or any other abnormal proccess termination? Note that I'm in a multi-threaded environment, but I don`t have strong performance needs. Right now I'll start reading the source to try to try to answer my questions, but if someone could give me some help it would be appreciated. By the way, I just started using the library and I`m really enjoying it, it`s a little confusing at first but reading the documentation and the blog really clarifies things a lot. Thanks _____ ---------------------------------------------------------------------------- -- EMC VNX: the world's simplest storage, starting under $10K The only unified storage solution that offers unified management Up to 160% more powerful than alternatives and 25% more efficient. Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev _____ _______________________________________________ Pantheios-users mailing list Pan...@li... https://lists.sourceforge.net/lists/listinfo/pantheios-users |
From: Phanthos <pha...@gm...> - 2011-08-24 06:49:28
|
Thanks for such a full and detailed answer Matthew, if I get to the level where I feel comfortable teaching others to use the library I`ll certainly try to help. About the name, is the name of my company, not mine, my name`s Diego =) I understood the aim of Pantheios, it`s well explained in the website and now in your response. I`ll be eargly waiting and using the library while it gets more mature. 2011/8/24 Matthew Wilson <ma...@sy...> > ** > Michael > > Thanks for adding to the thread. > > My answers to your points. > > 1. As I mentioned in my response to Panthos, that's something that I've > planned, and partially implemented, just not had time/impetus to complete. > If a user wanted to sponsor its inclusion after October, that's bear fruit > I'm sure. =P. (To be honest, if enough users make fresh requests for it, > it's also reasonably likely to feature in the 1.0 final release, due > Dec/Jan.) > > 2. Again, as mentioned in my response to Panthos, the fact that you have to > be explicit is not for lack of wit on my part: you can see just those > facilities in FastFormat, Pantheios' sister (brother?) library. It's because > (I believe that) a diagnostic logging library must be 100% type-safe, and > must never of itself be a cause for failure (other than impossible-to-avoid > things, such as out-of-memory - and I've even got plans on limiting that ... > maybe in 1.1 next year). For sure, it's tiresome to write > pantheios::integer(x) - although a bit less tiresome to write pan::i(x) - > but that's orders of magnitude less tiresome than having the untestable log > statement, from that branch of code that is so unlikely to happen, fail when > the application does something extremely rare, leaving you with no clear > idea of what caused the problem, and possibly no way to reproduce it. > > I've always thought the compilation error messages were pretty good, but > then I suffer from selection bias on my own library. I'd really like to hear > more about what you don't like about this, and maybe address that. If you > can post the output next time that happens, along with saying what's hard to > understand, that'd be great. > > 3. I've done commercial back-ends for clients that do similar things. Also > front-ends that allow fine-grained control of filtering at runtime. It can > be challenging to get right, and anticipate all cases, but very interesting > to do. > > HTH > > Matt > > > ----- Original Message ----- > *From:* Michael Stephenson <dom...@gm...> > *To:* 'Phanthos Desenvolvimento' <pha...@gm...> ; > pan...@li... > *Sent:* Wednesday, August 24, 2011 2:23 PM > *Subject:* Re: [Pantheios-users] File Back-End > > My take…**** > > ** ** > > 1 - What does that mean in the be.file specific case? > For one thing, it means you don’t get things like rolling log files that > roll over after a time period or a file size and other niceties like that. > Actually that’s about the only nicety that I miss. I’ve implemented some > things like function entry/exit myself on top of Pantheios, but mostly I > don’t miss the rest of the fluff that log4xxx libraries provide.**** > > ** ** > > 2 - What kind of flaws or limitations will I face using this back-end?**** > > I can’t think of any per se except for #1 above. My only complaints are > probably due to a lack of understanding or due diligence on my part. It’s a > little painful to generate log entries with data types that Pantheious isn’t > set up to handle; e.g., having to wrap ints in panint(). I’ve had some > confusion about Unicode. My main complaint is that if, for example, I write > a line of code to log something and forget to wrap an int in panint(), then > I get an error at comple time but the error line (I use MSVC) is some macro > that gives me absolutely no clue as to the line of code where the invalid > log entry is actually located. It can thus be quite a hunt and quite > tedious to find the rogue log entry(ies), especially if I’ve written a lot > of code and a lot of logging code between the last time I compiled. Again, > these items are probably my lack of understanding; I basically got it > working enough that I was happy with it and haven’t had/taken the time to > revisit how things work. Personally I do pine for something a bit simpler > that basically uses macros that expand to if statements based on the current > log level for the front end and FastFormat for generating the strings for > the log entries efficiently to be handed off to the back end. I do like the > front end/back end separation. > > **** > > 3 - When my log is written on the disc? Is it possible that I could lose > log messages in the case of a segmentation fault or any other abnormal > proccess termination? > Your log entries are written whenever the OS flushes the file writes to > disk. Yes, if your process terminates abnormally, you will lose any log > entries that haven’t been flushed to disk. There is a somewhat newish > function in Pantheios that forces flushing to disk. I’ve had to use this > ad-hoc on occasion when my app was crashing and I was losing the last > several entries that led to the crash. It will slow things down considerably > if you use it much at all. Sorry, can’t remember offhand what the function > is called. By the way, this is probably true of about any logging library. > The way that I’ve been able to work around it is to have a separate child > process with an inter-process queue using shared memory so that the log > entries are copied to the child process almost immediately and subsequently > written to disk even if the main process crashes. I haven’t done this with > Panetheios at this point; what would be required would be a back end that > works as just described.**** > > ** ** > > *From:* Phanthos Desenvolvimento [mailto:pha...@gm...] > *Sent:* Tuesday, August 23, 2011 11:59 PM > *To:* pan...@li... > *Subject:* [Pantheios-users] File Back-End**** > > ** ** > > Hi, as you may have noticed i just started using Pantheios and now I have > some simple doubts. > > I was reading my way to find a way of logging everything to a file, so I > naturally started using be.file . > But I found this post -> > http://blog.pantheios.org/search/label/stock%20back-ends where it is > written: > "stock back-ends are intended for tutorial or simple program purposes. More > sophisticated logging should be provided by having Pantheios delegate its > transport to a fully-fledged logging library." > > 1 - What does that mean in the be.file specific case? > 2 - What kind of flaws or limitations will I face using this back-end? > 3 - When my log is written on the disc? Is it possible that I could lose > log messages in the case of a segmentation fault or any other abnormal > proccess termination? > Note that I'm in a multi-threaded environment, but I don`t have strong > performance needs. > > Right now I'll start reading the source to try to try to answer my > questions, but if someone could give me some help it would be appreciated. > > By the way, I just started using the library and I`m really enjoying it, > it`s a little confusing at first but reading the documentation and the blog > really clarifies things a lot. > > Thanks**** > > ------------------------------ > > > ------------------------------------------------------------------------------ > EMC VNX: the world's simplest storage, starting under $10K > The only unified storage solution that offers unified management > Up to 160% more powerful than alternatives and 25% more efficient. > Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev > > ------------------------------ > > _______________________________________________ > Pantheios-users mailing list > Pan...@li... > https://lists.sourceforge.net/lists/listinfo/pantheios-users > > |
From: Matthew W. <ma...@sy...> - 2011-08-24 06:16:11
|
Michael Thanks for adding to the thread. My answers to your points. 1. As I mentioned in my response to Panthos, that's something that I've planned, and partially implemented, just not had time/impetus to complete. If a user wanted to sponsor its inclusion after October, that's bear fruit I'm sure. =P. (To be honest, if enough users make fresh requests for it, it's also reasonably likely to feature in the 1.0 final release, due Dec/Jan.) 2. Again, as mentioned in my response to Panthos, the fact that you have to be explicit is not for lack of wit on my part: you can see just those facilities in FastFormat, Pantheios' sister (brother?) library. It's because (I believe that) a diagnostic logging library must be 100% type-safe, and must never of itself be a cause for failure (other than impossible-to-avoid things, such as out-of-memory - and I've even got plans on limiting that ... maybe in 1.1 next year). For sure, it's tiresome to write pantheios::integer(x) - although a bit less tiresome to write pan::i(x) - but that's orders of magnitude less tiresome than having the untestable log statement, from that branch of code that is so unlikely to happen, fail when the application does something extremely rare, leaving you with no clear idea of what caused the problem, and possibly no way to reproduce it. I've always thought the compilation error messages were pretty good, but then I suffer from selection bias on my own library. I'd really like to hear more about what you don't like about this, and maybe address that. If you can post the output next time that happens, along with saying what's hard to understand, that'd be great. 3. I've done commercial back-ends for clients that do similar things. Also front-ends that allow fine-grained control of filtering at runtime. It can be challenging to get right, and anticipate all cases, but very interesting to do. HTH Matt ----- Original Message ----- From: Michael Stephenson To: 'Phanthos Desenvolvimento' ; pan...@li... Sent: Wednesday, August 24, 2011 2:23 PM Subject: Re: [Pantheios-users] File Back-End My take. 1 - What does that mean in the be.file specific case? For one thing, it means you don't get things like rolling log files that roll over after a time period or a file size and other niceties like that. Actually that's about the only nicety that I miss. I've implemented some things like function entry/exit myself on top of Pantheios, but mostly I don't miss the rest of the fluff that log4xxx libraries provide. 2 - What kind of flaws or limitations will I face using this back-end? I can't think of any per se except for #1 above. My only complaints are probably due to a lack of understanding or due diligence on my part. It's a little painful to generate log entries with data types that Pantheious isn't set up to handle; e.g., having to wrap ints in panint(). I've had some confusion about Unicode. My main complaint is that if, for example, I write a line of code to log something and forget to wrap an int in panint(), then I get an error at comple time but the error line (I use MSVC) is some macro that gives me absolutely no clue as to the line of code where the invalid log entry is actually located. It can thus be quite a hunt and quite tedious to find the rogue log entry(ies), especially if I've written a lot of code and a lot of logging code between the last time I compiled. Again, these items are probably my lack of understanding; I basically got it working enough that I was happy with it and haven't had/taken the time to revisit how things work. Personally I do pine for something a bit simpler that basically uses macros that expand to if statements based on the current log level for the front end and FastFormat for generating the strings for the log entries efficiently to be handed off to the back end. I do like the front end/back end separation. 3 - When my log is written on the disc? Is it possible that I could lose log messages in the case of a segmentation fault or any other abnormal proccess termination? Your log entries are written whenever the OS flushes the file writes to disk. Yes, if your process terminates abnormally, you will lose any log entries that haven't been flushed to disk. There is a somewhat newish function in Pantheios that forces flushing to disk. I've had to use this ad-hoc on occasion when my app was crashing and I was losing the last several entries that led to the crash. It will slow things down considerably if you use it much at all. Sorry, can't remember offhand what the function is called. By the way, this is probably true of about any logging library. The way that I've been able to work around it is to have a separate child process with an inter-process queue using shared memory so that the log entries are copied to the child process almost immediately and subsequently written to disk even if the main process crashes. I haven't done this with Panetheios at this point; what would be required would be a back end that works as just described. From: Phanthos Desenvolvimento [mailto:pha...@gm...] Sent: Tuesday, August 23, 2011 11:59 PM To: pan...@li... Subject: [Pantheios-users] File Back-End Hi, as you may have noticed i just started using Pantheios and now I have some simple doubts. I was reading my way to find a way of logging everything to a file, so I naturally started using be.file . But I found this post -> http://blog.pantheios.org/search/label/stock%20back-ends where it is written: "stock back-ends are intended for tutorial or simple program purposes. More sophisticated logging should be provided by having Pantheios delegate its transport to a fully-fledged logging library." 1 - What does that mean in the be.file specific case? 2 - What kind of flaws or limitations will I face using this back-end? 3 - When my log is written on the disc? Is it possible that I could lose log messages in the case of a segmentation fault or any other abnormal proccess termination? Note that I'm in a multi-threaded environment, but I don`t have strong performance needs. Right now I'll start reading the source to try to try to answer my questions, but if someone could give me some help it would be appreciated. By the way, I just started using the library and I`m really enjoying it, it`s a little confusing at first but reading the documentation and the blog really clarifies things a lot. Thanks ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ EMC VNX: the world's simplest storage, starting under $10K The only unified storage solution that offers unified management Up to 160% more powerful than alternatives and 25% more efficient. Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev ------------------------------------------------------------------------------ _______________________________________________ Pantheios-users mailing list Pan...@li... https://lists.sourceforge.net/lists/listinfo/pantheios-users |
From: Matthew W. <ma...@sy...> - 2011-08-24 05:59:42
|
Phanthos - great name, btw! ;-) First, thanks for taking the time to post, so your knowledge and experience can be shared. (Thanks too to Michael, for adding his experience too. I'll answer Michael's points later) The documentation you quote does indeed represent the ethos of Pantheios. It is intended to be a diagnostic logging API library, not a logging library. There are many richly-functional logging libraries out there. The problem is, they all have APIs that are (i) slow, particularly when logging is not enabled (at a given severity level), and (ii) are not type-safe. Neither of these qualities is desirable - I would say not acceptable, either! - in a diagnostic logging library. The prime purpose of Pantheios is to address those two issues completely, while allowing access to the rich functionality of the libraries. It so happens that (i) many ongoing users, and (ii) all new users, just want to get up and running. An entirely worthwhile desire. (I have that too, with Pantheios, and with other libraries.) Consequently, I have provided a number of "stock" front-ends and back-ends, to enable users to experiment, and even to serve simple use cases (e.g. a short-lived command-line tool). Many users have got along nicely with the stock front/back-ends. Many others have use Pantheios with other logging libraries. (Many?) others again have turned away from the library because its stock facilities are so (deliberately) simple. I've previously taken on commercial activities to write specific custom back-ends (for specialised output streams, formats, integration with other libraries, and more). I can do that for you if you wish. However, I don't think that's what's called for in this case. I'll address your specific questions, and we'll see how far that gets you. 1. For be.file, it means that you're limited to the format options - determined at compile-time if you're using the "regular" form of the be.file library, or at initialisation time if you're using the callback form - and, importantly, that there are *no file-rolling facilities in this back-end*. Some while back I worked out a way to facilitate rolling on size, on day/date, on #log statements, but have not yet had time to complete and put it in. A user some while back offered to sponsor the addition of the feature, but when that failed to eventuate, the changes fell off the radar. I may get time in the next few months, prior to the 1.0 finalisation that I plan to do from Oct-Dec, but it's not certain. The original ethos still applies: if you want rolling files, integrate with log4??? 2. See above. 3. It's written at the pleasure of the operating system APIs being called: write() for UNIX, WriteFile() for Windows. As Michael has said, you can issue a flush whenever you wish. I do have a concern that you talk about behaviour during abnormal termination. By definition, in such conditions a process has violated its design, and you should not expect any guarantees. (That's not to say that you shouldn't make the attempt, but it is important to establish what is expected and required of a process that is faulted as opposed to one that is merely operating in a non-normative manner: see http://www.synesis.com.au/publishing/quality-matters/exceptions-the-worst-form-of-error-handling-apart-from-all-the-others.html, a reprint of an instalment of my Quality Matters column in ACCU's Overload journal.) I hope all that helps. I'm glad you like it so far. I hope you (and others) understand that the admitted inconvenient aspects - explicit use of inserters for built-in types, link-time front/back-end selection, awkward callback mechanism - are all a consequence of Pantheios' prime directives: must never be a cause of failure, must have negligible performance costs when logging is disable (as well as performing very well when it's enabled, of course. They are not put there to vex programmers needlessly. Nor are they a consequence of unthought compromise. :-) Please note that once my current very-intense commercial engagement is complete, I will be moving Pantheios to a new level of readiness (i.e. full-fledged non-beta release, along with packaging, new website, and comprehensive reference and tutorial material). If you can stick it out till the end of the year, you may find that many things become clearer then. (Hey, if you've read enough of the docs and code by then, you'll be welcome to contribute tutorial material yourself! <g>) HTH Matt ----- Original Message ----- From: Phanthos Desenvolvimento To: pan...@li... Sent: Wednesday, August 24, 2011 1:59 PM Subject: [Pantheios-users] File Back-End Hi, as you may have noticed i just started using Pantheios and now I have some simple doubts. I was reading my way to find a way of logging everything to a file, so I naturally started using be.file . But I found this post -> http://blog.pantheios.org/search/label/stock%20back-ends where it is written: "stock back-ends are intended for tutorial or simple program purposes. More sophisticated logging should be provided by having Pantheios delegate its transport to a fully-fledged logging library." 1 - What does that mean in the be.file specific case? 2 - What kind of flaws or limitations will I face using this back-end? 3 - When my log is written on the disc? Is it possible that I could lose log messages in the case of a segmentation fault or any other abnormal proccess termination? Note that I'm in a multi-threaded environment, but I don`t have strong performance needs. Right now I'll start reading the source to try to try to answer my questions, but if someone could give me some help it would be appreciated. By the way, I just started using the library and I`m really enjoying it, it`s a little confusing at first but reading the documentation and the blog really clarifies things a lot. Thanks ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ EMC VNX: the world's simplest storage, starting under $10K The only unified storage solution that offers unified management Up to 160% more powerful than alternatives and 25% more efficient. Guaranteed. http://p.sf.net/sfu/emc-vnx-dev2dev ------------------------------------------------------------------------------ _______________________________________________ Pantheios-users mailing list Pan...@li... https://lists.sourceforge.net/lists/listinfo/pantheios-users |
From: Phanthos D. <pha...@gm...> - 2011-08-24 04:31:01
|
Really nice answer! Then my only concern will be ensuring that everything gets written to the disk. Not really an easy task while multithreading. About the function that flushes to the disk, I found this one http://pantheios.sourceforge.net/doc/html/group__group____backend____stock__backends____file.html#gfb4aba2a477e1364b8dadb2fe289685f Could you share your code that handles entry/exit? Thanks 2011/8/24 Michael Stephenson <dom...@gm...> > My take…**** > > ** ** > > 1 - What does that mean in the be.file specific case? > For one thing, it means you don’t get things like rolling log files that > roll over after a time period or a file size and other niceties like that. > Actually that’s about the only nicety that I miss. I’ve implemented some > things like function entry/exit myself on top of Pantheios, but mostly I > don’t miss the rest of the fluff that log4xxx libraries provide.**** > > ** ** > > 2 - What kind of flaws or limitations will I face using this back-end?**** > > I can’t think of any per se except for #1 above. My only complaints are > probably due to a lack of understanding or due diligence on my part. It’s a > little painful to generate log entries with data types that Pantheious isn’t > set up to handle; e.g., having to wrap ints in panint(). I’ve had some > confusion about Unicode. My main complaint is that if, for example, I write > a line of code to log something and forget to wrap an int in panint(), then > I get an error at comple time but the error line (I use MSVC) is some macro > that gives me absolutely no clue as to the line of code where the invalid > log entry is actually located. It can thus be quite a hunt and quite > tedious to find the rogue log entry(ies), especially if I’ve written a lot > of code and a lot of logging code between the last time I compiled. Again, > these items are probably my lack of understanding; I basically got it > working enough that I was happy with it and haven’t had/taken the time to > revisit how things work. Personally I do pine for something a bit simpler > that basically uses macros that expand to if statements based on the current > log level for the front end and FastFormat for generating the strings for > the log entries efficiently to be handed off to the back end. I do like the > front end/back end separation. > > **** > > 3 - When my log is written on the disc? Is it possible that I could lose > log messages in the case of a segmentation fault or any other abnormal > proccess termination? > Your log entries are written whenever the OS flushes the file writes to > disk. Yes, if your process terminates abnormally, you will lose any log > entries that haven’t been flushed to disk. There is a somewhat newish > function in Pantheios that forces flushing to disk. I’ve had to use this > ad-hoc on occasion when my app was crashing and I was losing the last > several entries that led to the crash. It will slow things down considerably > if you use it much at all. Sorry, can’t remember offhand what the function > is called. By the way, this is probably true of about any logging library. > The way that I’ve been able to work around it is to have a separate child > process with an inter-process queue using shared memory so that the log > entries are copied to the child process almost immediately and subsequently > written to disk even if the main process crashes. I haven’t done this with > Panetheios at this point; what would be required would be a back end that > works as just described.**** > > ** ** > > *From:* Phanthos Desenvolvimento [mailto:pha...@gm...] > *Sent:* Tuesday, August 23, 2011 11:59 PM > *To:* pan...@li... > *Subject:* [Pantheios-users] File Back-End**** > > ** ** > > Hi, as you may have noticed i just started using Pantheios and now I have > some simple doubts. > > I was reading my way to find a way of logging everything to a file, so I > naturally started using be.file . > But I found this post -> > http://blog.pantheios.org/search/label/stock%20back-ends where it is > written: > "stock back-ends are intended for tutorial or simple program purposes. More > sophisticated logging should be provided by having Pantheios delegate its > transport to a fully-fledged logging library." > > 1 - What does that mean in the be.file specific case? > 2 - What kind of flaws or limitations will I face using this back-end? > 3 - When my log is written on the disc? Is it possible that I could lose > log messages in the case of a segmentation fault or any other abnormal > proccess termination? > Note that I'm in a multi-threaded environment, but I don`t have strong > performance needs. > > Right now I'll start reading the source to try to try to answer my > questions, but if someone could give me some help it would be appreciated. > > By the way, I just started using the library and I`m really enjoying it, > it`s a little confusing at first but reading the documentation and the blog > really clarifies things a lot. > > Thanks**** > |
From: Michael S. <dom...@gm...> - 2011-08-24 04:23:21
|
My take. 1 - What does that mean in the be.file specific case? For one thing, it means you don't get things like rolling log files that roll over after a time period or a file size and other niceties like that. Actually that's about the only nicety that I miss. I've implemented some things like function entry/exit myself on top of Pantheios, but mostly I don't miss the rest of the fluff that log4xxx libraries provide. 2 - What kind of flaws or limitations will I face using this back-end? I can't think of any per se except for #1 above. My only complaints are probably due to a lack of understanding or due diligence on my part. It's a little painful to generate log entries with data types that Pantheious isn't set up to handle; e.g., having to wrap ints in panint(). I've had some confusion about Unicode. My main complaint is that if, for example, I write a line of code to log something and forget to wrap an int in panint(), then I get an error at comple time but the error line (I use MSVC) is some macro that gives me absolutely no clue as to the line of code where the invalid log entry is actually located. It can thus be quite a hunt and quite tedious to find the rogue log entry(ies), especially if I've written a lot of code and a lot of logging code between the last time I compiled. Again, these items are probably my lack of understanding; I basically got it working enough that I was happy with it and haven't had/taken the time to revisit how things work. Personally I do pine for something a bit simpler that basically uses macros that expand to if statements based on the current log level for the front end and FastFormat for generating the strings for the log entries efficiently to be handed off to the back end. I do like the front end/back end separation. 3 - When my log is written on the disc? Is it possible that I could lose log messages in the case of a segmentation fault or any other abnormal proccess termination? Your log entries are written whenever the OS flushes the file writes to disk. Yes, if your process terminates abnormally, you will lose any log entries that haven't been flushed to disk. There is a somewhat newish function in Pantheios that forces flushing to disk. I've had to use this ad-hoc on occasion when my app was crashing and I was losing the last several entries that led to the crash. It will slow things down considerably if you use it much at all. Sorry, can't remember offhand what the function is called. By the way, this is probably true of about any logging library. The way that I've been able to work around it is to have a separate child process with an inter-process queue using shared memory so that the log entries are copied to the child process almost immediately and subsequently written to disk even if the main process crashes. I haven't done this with Panetheios at this point; what would be required would be a back end that works as just described. From: Phanthos Desenvolvimento [mailto:pha...@gm...] Sent: Tuesday, August 23, 2011 11:59 PM To: pan...@li... Subject: [Pantheios-users] File Back-End Hi, as you may have noticed i just started using Pantheios and now I have some simple doubts. I was reading my way to find a way of logging everything to a file, so I naturally started using be.file . But I found this post -> http://blog.pantheios.org/search/label/stock%20back-ends where it is written: "stock back-ends are intended for tutorial or simple program purposes. More sophisticated logging should be provided by having Pantheios delegate its transport to a fully-fledged logging library." 1 - What does that mean in the be.file specific case? 2 - What kind of flaws or limitations will I face using this back-end? 3 - When my log is written on the disc? Is it possible that I could lose log messages in the case of a segmentation fault or any other abnormal proccess termination? Note that I'm in a multi-threaded environment, but I don`t have strong performance needs. Right now I'll start reading the source to try to try to answer my questions, but if someone could give me some help it would be appreciated. By the way, I just started using the library and I`m really enjoying it, it`s a little confusing at first but reading the documentation and the blog really clarifies things a lot. Thanks |
From: Phanthos D. <pha...@gm...> - 2011-08-24 03:59:19
|
Hi, as you may have noticed i just started using Pantheios and now I have some simple doubts. I was reading my way to find a way of logging everything to a file, so I naturally started using be.file . But I found this post -> http://blog.pantheios.org/search/label/stock%20back-ends where it is written: "stock back-ends are intended for tutorial or simple program purposes. More sophisticated logging should be provided by having Pantheios delegate its transport to a fully-fledged logging library." 1 - What does that mean in the be.file specific case? 2 - What kind of flaws or limitations will I face using this back-end? 3 - When my log is written on the disc? Is it possible that I could lose log messages in the case of a segmentation fault or any other abnormal proccess termination? Note that I'm in a multi-threaded environment, but I don`t have strong performance needs. Right now I'll start reading the source to try to try to answer my questions, but if someone could give me some help it would be appreciated. By the way, I just started using the library and I`m really enjoying it, it`s a little confusing at first but reading the documentation and the blog really clarifies things a lot. Thanks |
From: Phanthos D. <pha...@gm...> - 2011-08-23 07:17:27
|
I'll try to find the cause, thanks for the clue. 2011/8/23 Matthew Wilson <st...@gm...> > Sorry. Stupid iPad. > > I was saying, mingw might define WIN32, which would be bad, or you're doing > it in your makefile. In either case I don't know why you don't pick up the > windows.h for a Windows build. I hope that gives you a clue to help find the > cause. > > Matt > > P.S. Please note that I'll be devoting a *lot* of effort to polishing and > finalizing Pantheios 1.0 in four weeks' time, but none before then. > > > On Tuesday, 23 August 2011, Matthew Wilson <st...@gm...> wrote: > > I don't think it's an error. Without being able to check, my guess is > that mingw defines WIN32 (which would be bad > > > > On Tuesday, 23 August 2011, Phanthos Desenvolvimento <pha...@gm...> > wrote: > >> Update: > >> test.scratch.fe.cpp doesn`t work also, seems like the same error. > >> > >> Besides these 2 files everything else compiles and works correclty ( as > far as I tested using the provided unit testes ) > >> > >> [test.scratch.fe.cpp src] > >> VARIANT var; > >> > >> ::VariantInit(&var); > >> var.vt = VT_I4; > >> var.lVal = 12345678; > >> > >> HWND hwnd = ::GetDesktopWindow(); > >> > >> pantheios::log_INFORMATIONAL("v=", var, "; h=", hwnd); > >> [/src] > >> > >> [error] > >> In file included from ..\..\include/pantheios/pantheios.hpp:341, > >> from > ..\..\test\scratch\test.scratch.fe\test.scratch.fe.cpp:48: > >> ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp: In > function 'int pantheios::log_INFORMATIONAL(const T0&, const T1&, const T2&, > const T3&) [with T0 = char [3], T1 = VARIANT, T2 = char [5], T3 = HWND__*]': > >> ..\..\test\scratch\test.scratch.fe\test.scratch.fe.cpp:169: > instantiated from here > >> > ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: > error: no matching function for call to 'c_str_len_a(const tagVARIANT&)' > >> ..\..\include/pantheios/pantheios.h:1592: note: candidates are: size_t > pantheios::shims::c_str_len_a(pantheios::pan_severity_t) > >> ..\..\include/pantheios/pantheios.h:1549: note: size_t > pantheios::shims::c_str_len_a(const pantheios::pan_slice_t*) > >> ..\..\include/pantheios/pantheios.h:1459: note: size_t > pantheios::shims::c_str_len_a(const pantheios::pan_slice_t&) > >> ..\..\include/stlsoft/shims/access/string/std/c_string.h:288: > note: stlsoft::ss_size_t stlsoft::c_str_len_a(const > stlsoft::ss_char_a_t*) > >> ..\..\include/stlsoft/shims/access/string/std/exception.hpp:299: > note: stlsoft::ss_size_t stlsoft::c_str_len_a(const > std::exception&) > >> ..\..\include/stlsoft/shims/access/string/std/basic_string.hpp:392: > note: stlsoft::ss_size_t stlsoft::c_str_len_a(const > std::string&) > >> ..\..\include/stlsoft/shims/access/string/std/time.hpp:143: > note: stlsoft::ss_size_t stlsoft::c_str_len_a(const tm*) > >> ..\..\include/stlsoft/shims/access/string/std/time.hpp:254: > note: stlsoft::ss_size_t stlsoft::c_str_len_a(const tm&) > >> > ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: > error: no matching function for call to 'c_str_data_a(const tagVARIANT&)' > >> ..\..\include/pantheios/pantheios.h:1574: note: candidates are: const > char* pantheios::shims::c_str_data_a(pantheios::pan_severity_t) > >> ..\..\include/pantheios/pantheios.h:1527: note: const > char* pantheios::shims::c_str_data_a(const pantheios::pan_slice_t*) > >> ..\..\include/pantheios/pantheios.h:1437: note: const > char* pantheios::shims::c_str_data_a(const pantheios::pan_slice_t&) > >> ..\..\include/stlsoft/shims/access/string/std/c_string.h:135: > note: const stlsoft::ss_char_a_t* > stlsoft::c_str_data_a(const stlsoft::ss_char_a_t*) > >> ..\..\include/stlsoft/shims/access/string/std/exception.hpp:223: > note: const stlsoft::ss_char_a_t* > stlsoft::c_str_data_a(const std::exception&) > >> ..\..\include/stlsoft/shims/access/string/std/basic_string.hpp:226: > note: const stlsoft::ss_char_a_t* > stlsoft::c_str_data_a(const std::string&) > >> ..\..\include/stlsoft/shims/access/string/std/time.hpp:100: > note: stlsoft::basic_shim_string<char, 64u, false, > std::allocator<char>, stlsoft::stlsoft_char_traits<char> > > stlsoft::c_str_data_a(const tm*) > >> ..\..\include/stlsoft/shims/access/string/std/time.hpp:241: > note: stlsoft::basic_shim_string<char, 64u, false, > std::allocator<char>, stlsoft::stlsoft_char_traits<char> > > stlsoft::c_str_data_a(const tm&) > >> > ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: > error: no matching function for call to 'c_str_len_a(HWND__* const&)' > >> ..\..\include/pantheios/pantheios.h:1592: note: candidates are: size_t > pantheios::shims::c_str_len_a(pantheios::pan_severity_t) > >> ..\..\include/pantheios/pantheios.h:1549: note: size_t > pantheios::shims::c_str_len_a(const pantheios::pan_slice_t*) > >> ..\..\include/pantheios/pantheios.h:1459: note: size_t > pantheios::-- > > > > > --LongSig > > > > Dr Matthew D. Wilson > > > > Director - Synesis Software > > > > m: +61 410 442244 <tel:%2B61%20410%20442244> > > t: +61 2 9399 9136 <tel:%2B61%202%209399%209136> > > > e: ma...@sy... > > w: www.synesis.com.au > > > > Synesis Software Pty Ltd > > > > | Project Rescue | Software Team Management | Training | Software > Architecture and Design | Custom Product Development | Solution Review | > > > > This communication is confidential and may contain legally privileged > > information. If you are not the named recipient, please contact us > > immediately. You must not copy, use or disclose this communication, > > or any attachments or information in it, without our consent. > > > > -- > > --LongSig > > Dr Matthew D. Wilson > > Director - Synesis Software > > m: +61 410 442244 > t: +61 2 9399 9136 > e: ma...@sy... > w: www.synesis.com.au > > Synesis Software Pty Ltd > > | Project Rescue | Software Team Management | Training | Software > Architecture and Design | Custom Product Development | Solution Review | > > This communication is confidential and may contain legally privileged > information. If you are not the named recipient, please contact us > immediately. You must not copy, use or disclose this communication, > or any attachments or information in it, without our consent. > |
From: Matthew W. <st...@gm...> - 2011-08-23 07:10:03
|
Sorry. Stupid iPad. I was saying, mingw might define WIN32, which would be bad, or you're doing it in your makefile. In either case I don't know why you don't pick up the windows.h for a Windows build. I hope that gives you a clue to help find the cause. Matt P.S. Please note that I'll be devoting a *lot* of effort to polishing and finalizing Pantheios 1.0 in four weeks' time, but none before then. On Tuesday, 23 August 2011, Matthew Wilson <st...@gm...> wrote: > I don't think it's an error. Without being able to check, my guess is that mingw defines WIN32 (which would be bad > > On Tuesday, 23 August 2011, Phanthos Desenvolvimento <pha...@gm...> wrote: >> Update: >> test.scratch.fe.cpp doesn`t work also, seems like the same error. >> >> Besides these 2 files everything else compiles and works correclty ( as far as I tested using the provided unit testes ) >> >> [test.scratch.fe.cpp src] >> VARIANT var; >> >> ::VariantInit(&var); >> var.vt = VT_I4; >> var.lVal = 12345678; >> >> HWND hwnd = ::GetDesktopWindow(); >> >> pantheios::log_INFORMATIONAL("v=", var, "; h=", hwnd); >> [/src] >> >> [error] >> In file included from ..\..\include/pantheios/pantheios.hpp:341, >> from ..\..\test\scratch\test.scratch.fe\test.scratch.fe.cpp:48: >> ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp: In function 'int pantheios::log_INFORMATIONAL(const T0&, const T1&, const T2&, const T3&) [with T0 = char [3], T1 = VARIANT, T2 = char [5], T3 = HWND__*]': >> ..\..\test\scratch\test.scratch.fe\test.scratch.fe.cpp:169: instantiated from here >> ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: error: no matching function for call to 'c_str_len_a(const tagVARIANT&)' >> ..\..\include/pantheios/pantheios.h:1592: note: candidates are: size_t pantheios::shims::c_str_len_a(pantheios::pan_severity_t) >> ..\..\include/pantheios/pantheios.h:1549: note: size_t pantheios::shims::c_str_len_a(const pantheios::pan_slice_t*) >> ..\..\include/pantheios/pantheios.h:1459: note: size_t pantheios::shims::c_str_len_a(const pantheios::pan_slice_t&) >> ..\..\include/stlsoft/shims/access/string/std/c_string.h:288: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const stlsoft::ss_char_a_t*) >> ..\..\include/stlsoft/shims/access/string/std/exception.hpp:299: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const std::exception&) >> ..\..\include/stlsoft/shims/access/string/std/basic_string.hpp:392: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const std::string&) >> ..\..\include/stlsoft/shims/access/string/std/time.hpp:143: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const tm*) >> ..\..\include/stlsoft/shims/access/string/std/time.hpp:254: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const tm&) >> ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: error: no matching function for call to 'c_str_data_a(const tagVARIANT&)' >> ..\..\include/pantheios/pantheios.h:1574: note: candidates are: const char* pantheios::shims::c_str_data_a(pantheios::pan_severity_t) >> ..\..\include/pantheios/pantheios.h:1527: note: const char* pantheios::shims::c_str_data_a(const pantheios::pan_slice_t*) >> ..\..\include/pantheios/pantheios.h:1437: note: const char* pantheios::shims::c_str_data_a(const pantheios::pan_slice_t&) >> ..\..\include/stlsoft/shims/access/string/std/c_string.h:135: note: const stlsoft::ss_char_a_t* stlsoft::c_str_data_a(const stlsoft::ss_char_a_t*) >> ..\..\include/stlsoft/shims/access/string/std/exception.hpp:223: note: const stlsoft::ss_char_a_t* stlsoft::c_str_data_a(const std::exception&) >> ..\..\include/stlsoft/shims/access/string/std/basic_string.hpp:226: note: const stlsoft::ss_char_a_t* stlsoft::c_str_data_a(const std::string&) >> ..\..\include/stlsoft/shims/access/string/std/time.hpp:100: note: stlsoft::basic_shim_string<char, 64u, false, std::allocator<char>, stlsoft::stlsoft_char_traits<char> > stlsoft::c_str_data_a(const tm*) >> ..\..\include/stlsoft/shims/access/string/std/time.hpp:241: note: stlsoft::basic_shim_string<char, 64u, false, std::allocator<char>, stlsoft::stlsoft_char_traits<char> > stlsoft::c_str_data_a(const tm&) >> ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: error: no matching function for call to 'c_str_len_a(HWND__* const&)' >> ..\..\include/pantheios/pantheios.h:1592: note: candidates are: size_t pantheios::shims::c_str_len_a(pantheios::pan_severity_t) >> ..\..\include/pantheios/pantheios.h:1549: note: size_t pantheios::shims::c_str_len_a(const pantheios::pan_slice_t*) >> ..\..\include/pantheios/pantheios.h:1459: note: size_t pantheios::-- > > --LongSig > > Dr Matthew D. Wilson > > Director - Synesis Software > > m: +61 410 442244 <tel:%2B61%20410%20442244> > t: +61 2 9399 9136 <tel:%2B61%202%209399%209136> > e: ma...@sy... > w: www.synesis.com.au > > Synesis Software Pty Ltd > > | Project Rescue | Software Team Management | Training | Software Architecture and Design | Custom Product Development | Solution Review | > > This communication is confidential and may contain legally privileged > information. If you are not the named recipient, please contact us > immediately. You must not copy, use or disclose this communication, > or any attachments or information in it, without our consent. > -- --LongSig Dr Matthew D. Wilson Director - Synesis Software m: +61 410 442244 t: +61 2 9399 9136 e: ma...@sy... w: www.synesis.com.au Synesis Software Pty Ltd | Project Rescue | Software Team Management | Training | Software Architecture and Design | Custom Product Development | Solution Review | This communication is confidential and may contain legally privileged information. If you are not the named recipient, please contact us immediately. You must not copy, use or disclose this communication, or any attachments or information in it, without our consent. |
From: Matthew W. <st...@gm...> - 2011-08-23 07:05:51
|
I don't think it's an error. Without being able to check, my guess is that mingw defines WIN32 (which would be bad On Tuesday, 23 August 2011, Phanthos Desenvolvimento <pha...@gm...> wrote: > Update: > test.scratch.fe.cpp doesn`t work also, seems like the same error. > > Besides these 2 files everything else compiles and works correclty ( as far as I tested using the provided unit testes ) > > [test.scratch.fe.cpp src] > VARIANT var; > > ::VariantInit(&var); > var.vt = VT_I4; > var.lVal = 12345678; > > HWND hwnd = ::GetDesktopWindow(); > > pantheios::log_INFORMATIONAL("v=", var, "; h=", hwnd); > [/src] > > [error] > In file included from ..\..\include/pantheios/pantheios.hpp:341, > from ..\..\test\scratch\test.scratch.fe\test.scratch.fe.cpp:48: > ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp: In function 'int pantheios::log_INFORMATIONAL(const T0&, const T1&, const T2&, const T3&) [with T0 = char [3], T1 = VARIANT, T2 = char [5], T3 = HWND__*]': > ..\..\test\scratch\test.scratch.fe\test.scratch.fe.cpp:169: instantiated from here > ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: error: no matching function for call to 'c_str_len_a(const tagVARIANT&)' > ..\..\include/pantheios/pantheios.h:1592: note: candidates are: size_t pantheios::shims::c_str_len_a(pantheios::pan_severity_t) > ..\..\include/pantheios/pantheios.h:1549: note: size_t pantheios::shims::c_str_len_a(const pantheios::pan_slice_t*) > ..\..\include/pantheios/pantheios.h:1459: note: size_t pantheios::shims::c_str_len_a(const pantheios::pan_slice_t&) > ..\..\include/stlsoft/shims/access/string/std/c_string.h:288: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const stlsoft::ss_char_a_t*) > ..\..\include/stlsoft/shims/access/string/std/exception.hpp:299: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const std::exception&) > ..\..\include/stlsoft/shims/access/string/std/basic_string.hpp:392: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const std::string&) > ..\..\include/stlsoft/shims/access/string/std/time.hpp:143: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const tm*) > ..\..\include/stlsoft/shims/access/string/std/time.hpp:254: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const tm&) > ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: error: no matching function for call to 'c_str_data_a(const tagVARIANT&)' > ..\..\include/pantheios/pantheios.h:1574: note: candidates are: const char* pantheios::shims::c_str_data_a(pantheios::pan_severity_t) > ..\..\include/pantheios/pantheios.h:1527: note: const char* pantheios::shims::c_str_data_a(const pantheios::pan_slice_t*) > ..\..\include/pantheios/pantheios.h:1437: note: const char* pantheios::shims::c_str_data_a(const pantheios::pan_slice_t&) > ..\..\include/stlsoft/shims/access/string/std/c_string.h:135: note: const stlsoft::ss_char_a_t* stlsoft::c_str_data_a(const stlsoft::ss_char_a_t*) > ..\..\include/stlsoft/shims/access/string/std/exception.hpp:223: note: const stlsoft::ss_char_a_t* stlsoft::c_str_data_a(const std::exception&) > ..\..\include/stlsoft/shims/access/string/std/basic_string.hpp:226: note: const stlsoft::ss_char_a_t* stlsoft::c_str_data_a(const std::string&) > ..\..\include/stlsoft/shims/access/string/std/time.hpp:100: note: stlsoft::basic_shim_string<char, 64u, false, std::allocator<char>, stlsoft::stlsoft_char_traits<char> > stlsoft::c_str_data_a(const tm*) > ..\..\include/stlsoft/shims/access/string/std/time.hpp:241: note: stlsoft::basic_shim_string<char, 64u, false, std::allocator<char>, stlsoft::stlsoft_char_traits<char> > stlsoft::c_str_data_a(const tm&) > ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: error: no matching function for call to 'c_str_len_a(HWND__* const&)' > ..\..\include/pantheios/pantheios.h:1592: note: candidates are: size_t pantheios::shims::c_str_len_a(pantheios::pan_severity_t) > ..\..\include/pantheios/pantheios.h:1549: note: size_t pantheios::shims::c_str_len_a(const pantheios::pan_slice_t*) > ..\..\include/pantheios/pantheios.h:1459: note: size_t pantheios::shims::c_str_len_a(const pantheios::pan_slice_t&) > ..\..\include/stlsoft/shims/access/string/std/c_string.h:288: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const stlsoft::ss_char_a_t*) > ..\..\include/stlsoft/shims/access/string/std/exception.hpp:299: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const std::exception&) > ..\..\include/stlsoft/shims/access/string/std/basic_string.hpp:392: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const std::string&) > ..\..\include/stlsoft/shims/access/string/std/time.hpp:143: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const tm*) > ..\..\include/stlsoft/shims/access/string/std/time.hpp:254: note: stlsoft::ss_size_t stlsoft::c_str_len_a(const tm&) > ..\..\include/pantheios/./internal/generated/log_sev_functions.hpp:12053: error: no matching function for call to 'c_str_data_a(HWND__* const&)' > ..\..\include/pantheios/pantheios.h:1574: note: candidates are: const char* pantheios::shims::c_str_data_a(pantheios::pan_severity_t) > ..\..\include/pantheios/pantheios.h:1527: note: const char* pantheios::shims::c_str_data_a(const pantheios::pan_slice_t*) > ..\..\include/pantheios/pantheios.h:1437: note: const char* pantheios::shims::c_str_data_a(const pantheios::pan_slice_t&) > ..\..\include/stlsoft/shims/access/string/std/c_string.h:135: note: const stlsoft::ss_char_a_t* stlsoft::c_str_data_a(const stlsoft::ss_char_a_t*) > ..\..\include/stlsoft/shims/access/string/std/exception.hpp:223: note: const stlsoft::ss_char_a_t* stlsoft::c_str_data_a(const std::exception&) > ..\..\include/stlsoft/shims/access/string/std/basic_string.hpp:226: note: const stlsoft::ss_char_a_t* stlsoft::c_str_data_a(const std::string&) > ..\..\include/stlsoft/shims/access/string/std/time.hpp:100: note: stlsoft::basic_shim_string<char, 64u, false, std::allocator<char>, stlsoft::stlsoft_char_traits<char> > stlsoft::c_str_data_a(const tm*) > ..\..\include/stlsoft/shims/access/string/std/time.hpp:241: note: stlsoft::basic_shim_string<char, 64u, false, std::allocator<char>, stlsoft::stlsoft_char_traits<char> > stlsoft::c_str_data_a(const tm&) > mingw32-make: *** [.\test.fe.mt.debug.obj] Error 1 > [/error] > > > > 2011/8/23 Phanthos Desenvolvimento <pha...@gm...> >> >> Hi, >> I can almost build pantheios in mingw 4.4 using the makefile provided for gcc3.4. The only difference is that we have to remove -Werror due to some mingw restrictions ( "NULL used in arithmetic" is considered an error and it doesn`t compile ). Removing -Werror almost leads to a good compilation. >> >> The error I`m getting is while building \test\scratch\test.scratch.api\test.scratch.api.cpp >> I don`t know why, but it seems that mingw is getting some includes from `stlsoft` and not from `winstl` ( more precisely the function "stlsoft::ss_size_t stlsoft::c_str_len_a" ) >> >> In the lines 475 through 482 of \test\scratch\test.scratch.api\test.scratch.api.cpp we have: >> >> #if defined(PLATFORMSTL_OS_IS_WINDOWS) >> SYSTEMTIME tm; >> >> ::GetLocalTime(&tm); >> #else /* ? PLATFORMSTL_OS_IS_???? */ >> time_t t = ::time(NULL); >> struct tm const *tm = ::localtime(&t); >> #endif /* PLATFORMSTL_OS_IS_???? */ >> >> Removing: >> >> --#if defined(PLATFORMSTL_OS_IS_WINDOWS) >> -- SYSTEMTIME tm; >> -- >> -- ::GetLocalTime(&tm); >> --#else /* ? PLATFORMSTL_OS_IS_???? */ >> time_t t = ::time(NULL); >> struct tm const *tm = ::localtime(&t); >> --#endif /* PLATFORMSTL_OS_IS_???? */ >> >> mingw compiles it perfectly. >> >> Why does this happen? >> >> >> Thanks > > -- --LongSig Dr Matthew D. Wilson Director - Synesis Software m: +61 410 442244 t: +61 2 9399 9136 e: ma...@sy... w: www.synesis.com.au Synesis Software Pty Ltd | Project Rescue | Software Team Management | Training | Software Architecture and Design | Custom Product Development | Solution Review | This communication is confidential and may contain legally privileged information. If you are not the named recipient, please contact us immediately. You must not copy, use or disclose this communication, or any attachments or information in it, without our consent. |