<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>log4cpp CodeGit changes</title><link>https://sourceforge.net/p/log4cpp/codegit/</link><description>Recent changes to CodeGit repository in log4cpp project</description><atom:link href="https://sourceforge.net/p/log4cpp/codegit/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 30 Mar 2026 10:27:09 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/log4cpp/codegit/feed" rel="self" type="application/rss+xml"/><item><title>ChangeLog, index.html</title><link>https://sourceforge.net/p/log4cpp/codegit/ci/aaa0bb36c0f8a6e406b99dabdd021bb5dcdff15c/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;ChangeLog, index.html&lt;br/&gt;&lt;a href="/p/log4cpp/codegit/ci/aaa0bb36c0f8a6e406b99dabdd021bb5dcdff15c/"&gt;View Changes&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Mon, 30 Mar 2026 10:27:09 -0000</pubDate><guid>https://sourceforge.net/p/log4cpp/codegit/ci/aaa0bb36c0f8a6e406b99dabdd021bb5dcdff15c/</guid></item><item><title>NTEventLogAppender:</title><link>https://sourceforge.net/p/log4cpp/codegit/ci/84198fc1bd0086a8a57ba3cb02607e66d0438cda/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;NTEventLogAppender: * check values returned by winapi functions * print debug messages from NTEventLogAppender constructor onto console only in debug mode * enable use of automatic priorities count to other compilation modules&lt;br/&gt;&lt;a href="/p/log4cpp/codegit/ci/84198fc1bd0086a8a57ba3cb02607e66d0438cda/"&gt;View Changes&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Mon, 30 Mar 2026 10:27:09 -0000</pubDate><guid>https://sourceforge.net/p/log4cpp/codegit/ci/84198fc1bd0086a8a57ba3cb02607e66d0438cda/</guid></item><item><title>NTEventLogAppender:</title><link>https://sourceforge.net/p/log4cpp/codegit/ci/18de3bb8b56632f7d44ba50150420a1d5a7eba58/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;NTEventLogAppender: * Generate Event Message File "NTEventLogAppender.dll" for Windows Event Viewer with CMake on Win32 platforms. * Message Text File "NTEventLogCategories.mc" is a copy of same file from MSVC projects (plus added trace level) * NTEventLogDummy.cpp is CMake's requirement, source file should be present for the target library&lt;br/&gt;&lt;a href="/p/log4cpp/codegit/ci/18de3bb8b56632f7d44ba50150420a1d5a7eba58/"&gt;View Changes&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Mon, 30 Mar 2026 10:27:09 -0000</pubDate><guid>https://sourceforge.net/p/log4cpp/codegit/ci/18de3bb8b56632f7d44ba50150420a1d5a7eba58/</guid></item><item><title>NTEventLogAppender:</title><link>https://sourceforge.net/p/log4cpp/codegit/ci/7ca34538f51c7505151759c7725f5bee0f40f29d/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;NTEventLogAppender: * Nulling a handle since close() is public method and might be called on already closed appender. * Removed auxiliary functions from the interface and isolated them in implementation. This avoids probable UNICODE related linking issues. * Kept macro-dependant type TCHAR within implementation so that the library is able to respect value of UNICODE definition at compilation time. Thanks to Jac Goudsmit for noticing and proposals. * Fix probable out-of-bounds errors.&lt;br/&gt;&lt;a href="/p/log4cpp/codegit/ci/7ca34538f51c7505151759c7725f5bee0f40f29d/"&gt;View Changes&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Mon, 30 Mar 2026 10:27:09 -0000</pubDate><guid>https://sourceforge.net/p/log4cpp/codegit/ci/7ca34538f51c7505151759c7725f5bee0f40f29d/</guid></item><item><title>ChangeLog</title><link>https://sourceforge.net/p/log4cpp/codegit/ci/2539584231404557fa159cc788ad0cfe11b48b5a/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;ChangeLog&lt;br/&gt;&lt;a href="/p/log4cpp/codegit/ci/2539584231404557fa159cc788ad0cfe11b48b5a/"&gt;View Changes&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Fri, 27 Mar 2026 19:43:56 -0000</pubDate><guid>https://sourceforge.net/p/log4cpp/codegit/ci/2539584231404557fa159cc788ad0cfe11b48b5a/</guid></item><item><title>Merge Request #7 of Log library for C++:codegit.git discussion</title><link>https://sourceforge.net/p/log4cpp/codegit/merge-requests/7/?limit=50#12c4</link><description>&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Status&lt;/strong&gt;: open --&amp;gt; merged&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Fri, 27 Mar 2026 19:35:52 -0000</pubDate><guid>https://sourceforge.net7583e96d5a1027a72286ddf236b0128ace4b00e9</guid></item><item><title>Merge Request #7 of Log library for C++:codegit.git discussion</title><link>https://sourceforge.net/p/log4cpp/codegit/merge-requests/7/?limit=50#6fb4</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Summing comments on commits in merge request and my replies:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;close() now resets _hEventSource to NULL to prevent dangling handle&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;close()&lt;/code&gt; is either the last action performed by the class in destructor, or the action which is immediately followed by the open() and rewites handle right away. Hence, though nulling it might look like a proper precaution, it is redundant.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Functions that use _hEventSource now check for the handle to be non-NULL before using it (prevents invalid parameter exceptions in recent versions of Windows)&lt;/li&gt;
&lt;li&gt;Added a check for empty _strSourceName to open()&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Having checks in functions open() and &lt;code&gt;_append()&lt;/code&gt; would hide mistaken parameters instead of raising errors. &lt;br/&gt;
If &lt;code&gt;_strSourceName&lt;/code&gt; is empty, it most probably means that this is a mistake and it should be caught and fixed during testing (instead of being hidden behind a check)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The old open() function was only safe to call when the appender is in closed state, otherwise it would leak a handle.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;open()&lt;/code&gt; is protected and can not be called by clients of the class. Other calls are controlled by the implementation and those do not leak a handle.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Therefore it made sense to move the functionality of the open() function to the reopen() function &amp;lt;...&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That would mix semantics of open/reopen, making implementation more complex than it can be.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The old version of addRegistryInfo would always use "NTEventLogAppender.dll" without drive or directory, so it was necessary to put the DLL in the PATH or change the PATH to add the directory where the DLL is stored&lt;br/&gt;
Finally, the protected registry functions used TCHAR in their prototypes, which is a very bad idea: programs that are compiled in Unicode and use these functions would be incompatible with the log4cpp.dll because the DLL and the program would disagree on what a TCHAR is. This results in linker problems that are potentially very difficult or impossible to debug, especially for beginning Windows programmers.&lt;br/&gt;
Another problem was that the reopen() function would always get the registry key to check if it existed, which should not be necessary in most cases. And if the registry key already existed, the function wouldn't save the values so it was impossible to deliberately change the values.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These are all good points and could be fixed independently. Unfortunately, current merge request takes care of all of them together and they are now on top of another changes.&lt;br/&gt;
Rewriting registry keys on each reopen() call is solved by moving &lt;code&gt;addRegistryInfo()&lt;/code&gt; invokation into constructor. That way multiple reopen() calls will not cause many cycles of equivalent writes to registry. &lt;br/&gt;
Other two points can be considered as a list of good items to do. &lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Fri, 27 Mar 2026 19:35:24 -0000</pubDate><guid>https://sourceforge.neta7c5c47dadfb2073985b71f6de809a499108db18</guid></item><item><title>Avoid calling virtual functions from constructor: make open() non-virtual to remove ambiguity.</title><link>https://sourceforge.net/p/log4cpp/codegit/ci/e7fde8848b9a7f7d4fbf65b94a90c5c247bc2998/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Avoid calling virtual functions from constructor: make open() non-virtual to remove ambiguity.&lt;br/&gt;&lt;a href="/p/log4cpp/codegit/ci/e7fde8848b9a7f7d4fbf65b94a90c5c247bc2998/"&gt;View Changes&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Fri, 27 Mar 2026 19:28:24 -0000</pubDate><guid>https://sourceforge.net/p/log4cpp/codegit/ci/e7fde8848b9a7f7d4fbf65b94a90c5c247bc2998/</guid></item><item><title>NTEventLogAppender:</title><link>https://sourceforge.net/p/log4cpp/codegit/ci/d024ee2c60198bc233de40417bad0ab416b079d9/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;NTEventLogAppender: * fix for bug #148: remove virtual from open(). * avoid calling addRegistryInfo() on each invocation of reopen(), call it once in ctr instead. Thanks to Jac Goudsmit for reporting and proposals.&lt;br/&gt;&lt;a href="/p/log4cpp/codegit/ci/d024ee2c60198bc233de40417bad0ab416b079d9/"&gt;View Changes&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Fri, 27 Mar 2026 19:28:24 -0000</pubDate><guid>https://sourceforge.net/p/log4cpp/codegit/ci/d024ee2c60198bc233de40417bad0ab416b079d9/</guid></item><item><title>Changelog</title><link>https://sourceforge.net/p/log4cpp/codegit/ci/1c9cc027e9e9cdf2ca76295e32edb7c2771bcca1/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Changelog index.html Refine text, add entries to FAQ, add changelog&lt;br/&gt;&lt;a href="/p/log4cpp/codegit/ci/1c9cc027e9e9cdf2ca76295e32edb7c2771bcca1/"&gt;View Changes&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alexander Perepelkin</dc:creator><pubDate>Thu, 26 Mar 2026 19:14:10 -0000</pubDate><guid>https://sourceforge.net/p/log4cpp/codegit/ci/1c9cc027e9e9cdf2ca76295e32edb7c2771bcca1/</guid></item></channel></rss>