It's been national appenders month this month ![]()
We posted new stuff for both AsyncSocketAppender and lobgack appender. Now both of them have a backup feature which (optionally) will save files on local disk
when transition queue fills up. Queue overflows may occur when log server is unavailable while application keeps running. We didn't want
to automate this, because backup could grow into a really large collection and sending it could affect hosting application performance.
But at least you will have an option to manually insert those files into a logFaces server when you see fit.
logback appender was completely re-written to act exactly like it's log4j sibling. Now it's also asynchronous with fail over and backup options. Additionally, there is a very cool new feature based on a MARKER concept introduced with the logback API. Using variety of filters your application can drop markers into log statement and that is an additional piece of information which can be used for filtering and searches. For example, if you do this in your code :
- Marker ADMIN = MarkerFactory.getMarker("SYS-ADMIN");
- logger.trace(ADMIN, "this event is for the attention of sysadmin");
Then our appender will automatically transfer SYS-ADMIN marker to the server and you will be able to easily find all those marked events with MDC queries and filters. We transfer marker value into event properties before sending it over the wire, so on server you will want to map a context named 'marker' to any future markers emitted by your application. This is a predefined name, and all marker values will be tied to this property.
User manual is updated for all those new features. Get the updated appenders.jar here and replace it in your application classpath.
logback framework is changing so frequently, sometimes its hard to follow its pace. This time we post the fix for our logback appender to be compatible with latest release 0.9.24. Get the updated jar from here and replace it in your application classpath.
Note that you must use slf4j-api of version at least 1.6 or higher.
We are getting pretty close to the release of security features. The development is almost done and we're going to hit the test phase in a couple of weeks. Just to share with you our plans, I'd like to show what we're up to.
Access control will be an optional feature, those of you who don't need it will not be affected in any way. But those who want to provide an access control into logFaces server will be offered LDAP based authentication and authorization. Users will configure logFaces server to work with their own directory server in a pretty standard way. Well, this is at least what we are trying to archive. Here is a sample of a new page in administration console we will bring up:
As you can see, the authorization is also optional. When enabled, we will allow members of user groups to have an access only to those applications specified. For example, groups of developers and groups of testers will be able to see only relevant log data and will not get on each others way. When security will be enabled, clients will be prompted to log in. Credentials will be kept per workspace, so whenever you switch from one server to the other, the login can be performed automatically. Passwords are stored and transmitted in encrypted form. Here is an example how clients will login, note that if the security is not enabled on server, this dialog will not appear. :
If you have any comments or would like to suggest something, feel free to drop us a line via support email or tickets.
Sometimes I wonder if one could ever get time zones and daylight savings work without problems. No matter what you do, there would still be something to surprise you. We have posted a client update which fixes daylight savings related bug as some of you have reported. To get an update, go to Help menu and check for software updates. After getting the update, make sure to check that your perspectives and queries are using correct time zone as it might still be pointing to a wrong location.
Fixed bug related to creation of database schema with configurations using connection pool and MySQL
There are several important bug fixes for your attention. They aren't critical, but if you use the following features, consider to download the new build. Upgrade instructions are as usual - here.
- Fixed a bug related to database connection loss, prevented failure in admin status tab when database connection breaks.
- Fixed a bug in complex MDC queries where mixed AND/OR matches required.
- Using the client it's now possible to match ALL or ANY of the MDC properties. That applies to both real-time and query views.
- Using empty user name and password with email accounts is now possible.
There are several updates available for the client. Go to Help menu on client and "Check for software updates".
- We have drastically improved the display speed of large queries by using virtual SWT tables. Now the view is not populated entirely but only its visible part. Those of you who are on a slower machines or run huge queries should appreciate the difference.
- If you don't like the tray icon, you can now opt it out through the preferences.
We release second maintenance update for v2.5. Along with bug fixes and several new features we are happy to announce that starting from this release there are 64 bit distributions. Also, the server is now available for Solaris. Those new distributions are under beta tag until users confirm it's working well, but please do give it a try - after all it's the same code base wrapped up for different platforms. Upgrade instructions can be found here.
Below is a complete list of new things you will find in this release:
- E-mail notifications send from server can now be prioritized.
- Completely redesigned and improved report administration pages.
- Clients will now be able to lookup source files through HTTP URL mappings. Lookup actions are now asynchronous to avoid blocking.
- Introduced a concept of a Workspace on clients to allow fast switching from one environment to another. Those of you who work with several logFaces servers should find this feature very useful. No more client restarts when switching the server end point.
- Improved display of log messages in client. We've made a separate view to display the message texts similar to the one for exceptions. Particularly useful for large multi line messages.
- Upgraded clients to Eclipse 3.5 RCP targets, not that it's a new feature, but it's a good idea to stay up to date.
- Servers are now available for linux-x86-64, solaris-sparc-32, solaris-sparc-64 platforms (stable beta).
- Clients are now available for linux.gtk.x86_64, win32.win32.x86_64 (stable beta)
Bug fixes :
- This one should go first in the list as it was the hardest to fix. Some users reported client problems on Vista and Windows7 machines when real-time views would go wild with refreshes. It took us some time to figure out that those OS's behave quite differently with SWT and apparently extremely slow on some operations related to tables - sometimes by hundreds of times in respect to XP machines. We did change the mechanism of the tables drawing and now everything should work without a problem.
- Fixed bug related to Oracle metadata, it was causing to use wrong constraints on some columns in the schema. We also did lots of tests using CLOB's instead of deprecated LONG's. Looks pretty safe, go ahead and use it yourself. Particularly useful for very large messages and exception stack traces.
- Fixed quite some bugs in Linux clients, mainly related to file names and separators which prevented opening log files and sources.
Somehow the latest client build had a broken server mode feature. If you use server mode in your client, please make sure to take the latest update. Go to 'Help' menu on your client and install the updates.
We've also posted the fix for the logback appender to be compatible with latest release 0.9.18 Get the updated jar from here and replace it in your classpath.
We have fixed several issues with our Java™ based UDP appender - not frequently used one, it somehow slipped the attention. Get the updated jar from here and replace it in your classpath. This is how it should be configured in your log4j.properties :
- log4j.appender.LFSU = com.moonlit.logfaces.appenders.LFUDPAppender
- log4j.appender.LFSU.locationInfo = true
- log4j.appender.LFSU.application = YOUR-APP-NAME
- log4j.appender.LFSU.remoteHost = logfaces-server-host-name-or-ip
- log4j.appender.LFSU.port = 55201
- log4j.rootLogger = TRACE, LFSU
This is a first maintenance release for v2.5, upgrade instructions are here.. Here is a list of issues we've addressed:
- Server - we've found a resource leak in log4j socket receiver which might have caused issues in a very long runs without restart. We have completely replaced it with our own and it is much better now.
- Server - added two items in admin status panel - one is to obtain thread dumps and another one is active applications counter. All these are for feedback and troubleshooting.
- Server - removed descending indexes from MySQL default schema, it shouldn't have been there in the first place as MySQL doesn't support descending indexes.
- Server - added an option to use database connection pools, you can now specify c3p0 in your hibernate schema.
- Server - Important one about MySQL wait_timeout - it was causing loss of database connection when server was idle for longer than wait_timeout. Using connection pool the problem is solved nicely - specify hibernate.c3p0.idle_test_period so that it's smaller than wait_timeout and you shouldn't have this problem ever again.
- Server - we regularly update open source dependencies, so this time it were java mail, hibernate, c3p0, PostgreeSQL driver binaries.
- Client - it's now possible to drill into historical data from real-time views as in queries.
- Client - added authorized access to deletions from repository view. You will have to use your admin. credentials to delete records.
- Client - fixed bug in repository view when it was populated by large number of elements.
- Client - Re-drawing real-time views on Windows 7 seems to have a small issue. It's noticeable with very high loads when view fills up and starts to rotate. We are waiting for SWT package to be released for Windows 7 as it seems that problem might be in the way tables are drawn in this OS. Meanwhile, we have tried to improve the mechanism as much as we could and added an option to clear the view automatically when it fills up.
- Appender - removed annoying messages to stdout when its queue got filled up. Now it will only warn once.
We've grown one version taller and one year older ![]()
With the help of our users, this release brings significant improvements and many new and exciting features.
If you are upgrading from previous releases, please read the upgrade instructions here.
Below is the summary of new features :
Notification triggers
This feature will complement our reporting mechanism. Notification triggers will work in real-time and send e-mail alert as soon as something important takes place.
How important and what is important, it is all up to you. A trigger is a very fine filter which can be tuned to seek out very particular log statements. In addition to being a filter, trigger can also work like a counter and only fire when certain amount of interesting events are detected within specified time span. For example, think of a trigger that detects a burst of exceptions in the data layer of your system. You don't want to receive an e-mail every time there is a problem. But you definitely want to know that 50 exceptions popped on that particular host in just 2 minutes.
New appender with queue and fail over
We made a new appender to go with your applications. It has two major features - it is asynchronous and it is fail over capable. Being asynchronous means that log statements coming from your application aren't sent to the server at your expense, but rather done on a background thread. This also will help to keep some of the log statements during server down-time, ensure faster start times and significantly boost performance in the cases of bursts of logs. As to the fail over, this new appender will be able to quietly switch to another server without disrupting your application work. There are plenty of configuration options and we hope it will be good for most of the users.
Improved handling of load spikes
logFaces server already has a built-in mechanism to handle heavy load spikes. In this release we have made significant improvement to this mechanism to make it more robust and flexible. When load on the server becomes too high, the data gets over flown to the local disk. We have integrated ehcache for handling all disk operations and it shows fantastic results in performance. It's highly configurable and can be adopted to various situations.
Sophisticated view filters
Here comes the visual part which we have improved significantly in v2.5. We are going to introduce view filters to focus or ignore particular log statements.
This concept is similar to already existing perspectives we have with the only difference being that view filters apply on client side. Good example is when you take a large query covering a whole day of data. Once you've got the data, you want to play around with it. For example, focus on particular thread or host?
Or ignore particular packages which aren't relevant? Or focus only on exceptions? All this could be done now without extra trip to the database. And yes, the components (read below) are also applicable and will make great filters - instead of focusing on particular items you will be able to focus on a whole layer.
Improved perspective settings
We have done some major face lift to real-time perspective settings. Now it will be possible to use wild cards when defining include and exclude filters. This should greatly simplify and speed up the process of tuning real-time views.
New face - components!
Component - is a new concept we introducing in v2.5. A component is simply a collection of packages.
Why do we want it? Two points here; one - to be able to work with a large number of packages easily, and two - let others (e.g. QA people) to see the system from higher level.
Now, component is only a visual representation which you use to cut your system into a larger blocks. Once you have done that, you will be able to access the log data instantly, or filter it out, or focus on it. Real quick. Just a convenience, but we think it should be very handy particularly for those who swim in an ocean of packages and loggers.
We are pleased to announce the release of version 2.4.4
Along with minor bug fixes, this release brings up logFaces API and some improvements in data mining experience.
logFaces API
The motivation for the API is to allow usage of aggregated log data programmatically. If you are familiar with the way log4j works, look at logFaces API as a "super-receiver", which simultaneously gets data from many applications and hosts. You will be able to monitor errors coming from various ends in your system and use this information for your own needs. Many systems today have their own management or administration consoles, using logFaces API you will be able to embed log data into your own consoles, build customized log viewers or react to events in your system.
The API can be downloaded separately from here, it's packaged into a zip archive and contains everything you would need to get started - binary dependencies, documentation and code examples. Please have a look at User Manual describing in great details how to use the API.
Improved data mining experience
We have added a new feature in the client to simplify working with large result sets. Now you've got an option to filter out retrieved data on the spot and without extra trip to the database. When you do a query, you can reduce logs by severity levels, hosts, loggers, threads, text and MDC variables. Check out the new options in drop down menu :
Also, there are new quick shortcuts to get hold of historical data directly from repository view.
This maintenance update fixes several issues related to e-mails and reports. We have added an option to test e-mail settings in administration console and also provided several improvements in report definitions. Particularly, - issue reports on a fractions of the hour, use wildcards for matching loggers and using optional zipping of the attachments. Management of reports is also simplified and improved. Starting from this release you will be able to check if there are any server updates we release. This can be done directly from admin. console status tab. There are also several interesting additions to the client and user experience :
Colored overview of query results
When you fetch lots of log, you'd want to see quickly where (if any) problems are in the huge list of results. We have added a right side overview panel which will mark in bright colors all potential problems. This will allow jump real quick into particular line within the result set. Check out this screen shot :
Bookmarks in queries
While working with large result sets, you often want to move quickly from one point in time to the other. Now right clicking on the event, you can set a bookmark and then jump to it later with one click. Bookmarks are displayed on the overview bar next to the query results.
Clipboard operations
If you want to assign a bug or open a support ticket with attached log message - now you can copy log events directly from client views through the clipboard. The clipboard will contain well formatted textual log statements of your choice. You would then paste it into any textual content. The format is adjustable, several events can be copied at once.
Particular day errors and traces
We have added another fast query which can be executed directly from the repository without creating a special query. Right click in repository view and select "Particular day", this will take to errors or traces of specific day.
Similar events counter
If you see something suspicious in your log data, right click on event and ask to find similar events. We will tell you how many times and when this particular event have taken place. Very useful for finding repetitive occurrences of the same issue.
More flexible drill downs
Drill downs are now extended with an option to drill into information related to selected application, host or logger. This should be more convenient way to extract concise information.
We are pleased to announce the release of version 2.4.2 - maintenance release with some important updates, thanks to our users feedback! Along with bug fixes, there are several new and exciting features - see below :
Logback appender
Long awaited and asked by many - logback appender is now part of our distribution. We also provide source code just in case someone would want to improve it. Check out user manual on how to use it and where to find it.
Database schema is externalized
If you're an advanced user and DBA - now you can now have some control over the database schema. This should help to tune database performance by adjusting size constraints and indexes. More details again are in user manual.
Exception stack trace view
Now you've got spacious stack trace viewer. And it also links you to the source code, just click on the trace and see where the call is coming from. Check this out :
MDC queries
This concludes our saga with supporting mapped diagnostic context. Now you can query log data based on MDC and see those parameters as columns in all views. Administration console now provides mapping of MDC names your application generates to our database columns.
Small widgets
Handy little tool - database records counter on status bar - click on it to refresh. In addition to domain filter, we've also added a package filter in repository view. This should allow faster navigation in the maze of packages.
New features for this release :
- Dashboard of counters
- Source code correlation
- Improved MDC support
- More drill down options and queries
- Improved user experience
- Improved performance with large data loads
- Platform neutral distribution
This is a maintenance release with bug fixes reported by users.
After long time of internal use and development we are releasing logFaces for public review as a downloadable standalone product.
Should we call this a logFaces's birthday?









