Skip to main content

Home/ Java Development/ Group items tagged logging

Rss Feed Group items tagged

Rinav G

[JavaSpecialists 177] - Logging Part 3 of 3 - 0 views

  • Writing your own logging framework is the perfect coding crime.
  • Writing your own logging framework is the perfect coding crime
  • Even the Sun engineers fell into this trap. Prior to Java 4, we had a perfectly good logging framework in Log4J. However, instead of adopting this into the standard Java distribution, we ended up with java.util.logging. There are lots of Java logging frameworks available, even meta-logging frameworks like SLF4J and Jakarta Commons. These are supposed to abstract the logging frameworks so you can change the implementation without touching your code.
  • ...5 more annotations...
  • Logging Levels
  • In Log4J for example, we have six default levels, FATAL, ERROR, WARNING, INFO, DEBUG and TRACE.
  • Since it is tricky assigning the correct levels in our code, we should regularly do code reviews with specific emphasis on logging levels.
  • We should be able to adjust the log levels of our individual components at runtime without restarting our application.
  • Silent Operation
  •  
    Writing your own logging framework is the perfect coding crime. If you can convince your manager to put it on the project plan, you are guaranteed to have success. At the end of each day, you will go home feeling happy and satisfied. It will feel like you are doing something creative. You will get the intellectual stimulation without the risk of failure. Even the Sun engineers fell into this trap. Prior to Java 4, we had a perfectly good logging framework in Log4J. However, instead of adopting this into the standard Java distribution, we ended up with java.util.logging. There are lots of Java logging frameworks available, even meta-logging frameworks like SLF4J and Jakarta Commons. These are supposed to abstract the logging frameworks so you can change the implementation without touching your code. http://www.javaspecialists.eu/archive/Issue177.html
Hendy Irawan

SLF4J - 0 views

  •  
    The Simple Logging Facade for Java or (SLF4J) serves as a simple facade or abstraction for various logging frameworks, e.g. java.util.logging, log4j and logback, allowing the end user to plug in the desired logging framework at deployment time. Before you start using SLF4J, we highly recommend that you read the two-page SLF4J user manual. In case you wish to migrate your Java source files to SLF4J, consider our migrator tool which can migrate your project into SLF4J in minutes. In case an externally-maintained component you depend on uses a logging API other than SLF4J, such as commons logging, log4j or j.u.l, have a look at SLF4J's binary-support for legacy APIs.
Miguel Guerra Connor

Log4j Tutorial : How to send log messages to different log files? | Veera Sundar - 0 views

  •  
    multiples archivos log en log4j
abuwipp

Don't Use System.out.println! - 0 views

  •  
    good tutorial showing how to log using log4j, contains  many examples
Hendy Irawan

logviewer - =Eclipse Log Viewer= - Google Project Hosting - 0 views

  •  
    "Eclipse Plug-in for tailing log files and eclipse consoles (e.g. SVN, Java Stack Trace, CDT), including syntax coloring with either a regular expression or a word match. It allows you to have multiple logs open concurrently. "
Mahmoud Rabie

Using AspectJ to log all methods parameters and return values during application runtime - 8 views

  •  
    AspectJ is an aspect-oriented extension created at PARC for the Java programming language. It is available in Eclipse Foundation open-source projects, both stand-alone and integrated into Eclipse. AspectJ has become the widely used de-facto standard for AOP by emphasizing simplicity and usability for end users. It uses Java-like syntax and has included IDE integrations for displaying crosscutting structure since its initial public release in 2001. In this article we will describe how we can use AspectJ to do the logging job for all methods parameters and methods return values in a Java application
Manu PK

Logging Guidelines - Confluence Development - 0 views

  •  
    Logging is an important function of any software and for Confluence, benefits the following groups of people in the manners described:
Hendy Irawan

JAnnocessor is a new open-source framework for powerful, flexible, yet easy processing ... - 0 views

  •  
    "JAnnocessor is a new open-source framework for powerful, flexible, yet easy processing of annotated Java code. Its main purpose is compile-time, annotation-driven source code generation in a declarative and customizable fashion. JAnnocessor is built on top of Java APT, encapsulating the Java source code model in a rich and convenient high-level domain model that serves as a good target for expressive matching and transformation. Finally, a template engine is used for customizable template-based source code generation. Having simplicity and productivity in mind, JAnnocessor has many useful features that make it enjoyable: smart imports organization, logging delegation, graphical UI for real-time debug, hot swap of processors and templates, as well as out-of-the-box common annotations, processors and templates."
Hendy Irawan

Space: Arquillian - JBoss Community - 0 views

  •  
    "Test in-container! Arquillian logo This space contains the user discussions and articles for the Arquillian project. The development discussions and articles are found in the Arquillian Development Space and the FAQs are located in the Arquillian FAQ Space. Information about the project can be found on the Project Site. We invite you to join us in the #jbosstesting channel on freenode IRC to chat about Arquillian, ShrinkWrap, Embedded AS and testing. This channel is logged by echelog and JBossBot is there to expand JIRA issues."
Hendy Irawan

LiquiBase | Database Refactoring | home - 0 views

  •  
    Database Change Management You never develop code without version control, why do you develop your database without it? Liquibase is an open source (Apache 2.0 Licensed), database-independent library for tracking, managing and applying database changes. It is built on a simple premise: All database changes are stored in a human readable yet trackable form and checked into source control. Liquibase Supports: Extensibility Merging changes from multiple developers Code branches Multiple Databases Managing production data as well as various test datasets Cluster-safe database upgrades Automated updates or generation of SQL scripts that can be approved and applied by a DBA Update rollbacks Database "diff"s Generating starting change logs from existing database
Justin Pierce

Enjoy An Excellent Bookkeeping Service - 1 views

It is a small grocery with just 4 staff that I started 6 months ago. I thought I can smoothly run it on my own. But then I noticed that I always encounter troubles in doing the payroll and other mo...

started by Justin Pierce on 28 Dec 12 no follow-up yet
Justin Pierce

The Most Excellent Bookkeeping Services - 1 views

When I was still single, I had all the time to manage my gift shop. But when I got married a year ago, I found it really hard to give equal attention to my business as well as to my roles as a wife...

started by Justin Pierce on 14 Feb 13 no follow-up yet
Jay Dee

Good SEO Staff and Services - 2 views

Nowadays, people do not use the yellow pages or go directly to the stores to buy something. They are taking advantage of the internet whenever they have to buy something. For that reason, I have a ...

SEO Perth

started by Jay Dee on 25 Jan 11 no follow-up yet
anonymous

Large scale application development and MVP - Part II - Google Web Toolkit - Google Code - 0 views

  • itself
    • anonymous
       
      The View Implementation
  • @UiHandler("
  • presenter.onAddButtonClicked();
  • ...91 more annotations...
  • onAddButtonClicked
  • eventBus.fireEvent(new AddContactEvent());
  • presenter needs to know more about the view
  • view needs to know more about the data model
  • data types are typically homogeneous within column borders
  • ColumnDefinition abstract class
  • houses the any type-specific code (this is the third party mentioned above)
  • ColumnDefinition
  • ColumnDefinition(s) would be created outside of the presenter
  • we can reuse its logic regardless of what view we've attached ourself to
  • update our views such that we can set their ColumnDefinition(s).
  • setColumnDefinitions
  • this.columnDefinitions = columnDefinitions;
  • so that we can pass in
  • a mocked ContactsView instance when testing our ContactsPresenter
  • in our AppController, when we create the ContactsView,
  • new ContactsViewColumnDefinitions().getColumnDefinitions();
  • we can initialize it with the necessary ColumnDefinition(s).
  • contactsView.setColumnDefiniions(
    • anonymous
       
      Initialize ContactsView with the necessary ColumnDefinition(s)
  • With our ColumnDefinition(s) we can pass the model untouched.
  • As mentioned above we were previously dumbing down the model into a list of Strings
  • current solution
  • List<String> data
  • display.setData(data);
  • how that data type is rendered.
  • use generics
  • third party that abstracts
  • knowledge of a cell's data type
  • stringing together a list of these classes
  • providing the necessary render()
  • and isClickable()/isSelectable() override
  • ContactsViewColumnDefinitions<ContactDetails>
  • columnDefinitions =      new ArrayList<ColumnDefinition<ContactDetails>>()
  • ColumnDefinition<T>
  • ContactsPresenter
  • ContactsViewImpl
  • ColumnDefinition<T> columnDefinition = columnDefinitions.get(j);
  • the presenter can pass the model untouched
  • the view has no rendering code
  • that we would otherwise need to test. And the fun doesn't stop there.
  • presenter.onItemClicked(
  • presenter.onItemSelected
  • ClickEvent
  • cell.getCellIndex()
  • columnDefinition.isClickable()
  • SelectEvent
  • columnDefinition.isSelectable()
  • return shouldFireClickEvent;
  • return shouldFireSelectEvent;
  • respond to user interaction in different ways based upon the cell type that was clicked
  • use them for rendering purposes
  • defining how to interpret user interactions
  • we're going to remove any application state from the ContactsView
  • replace the view's getSelectedRows() with a SelectionModel
  • The SelectionModel is nothing more than a wrapper around a list of model objects.
  • ContactsPresenter holds on to an instance of this class
  • onItemSelected
  • Having the ColumnDefinition create a new widget for each cell is too heavy
  • Replace our FlexTable implementation with an HTML widget
  • calling setHTML()
  • Reduce the event overhead by sinking events on the HTML widget
  • rather than the individual cells
  • update our ContactsView.ui.xml file to use a
  • HTML widget rather than a FlexTable widget.
  • <g:HTML ui:field="contactsTable">
  • Inefficiencies related to inserting new elements via DOM manipulation Overhead associated with sinking events per Widget
  • for each item ask our column definitions to render accordingly
  • each column definition
  • render itself into the StringBuilder
  • rather than passing back a full-on widget
  • calling setHTML on a HTML widget
  • rather than calling setWidget on a FlexTable.
  • This will decrease your load time, especially as your tables start to grow.
  • we're reducing the overhead of sinking events on per-cell widgets
  • instead sinking on a single container
  • ClickEvents are still wired up via our UiHandler annotations
  • get the Element that was clicked on
  • and walk the DOM until we find a parent TableCellElement
  • we can determine the row
  • shouldFirdClickEvent() and shouldFireSelectEvent()
  • to take as a parameter a TableCellElement rather than a HTMLTable.Cell.
  • faster startup times via Code Splitting.
  • runAsync() points
  • split portion of your code is purely segmented
  • not referenced by other parts of the app
  • it will be downloaded and executed at the point that it needs to run
  • Do we really want to download all of that code before the user even logs in?
  • Not really.
  • simply grab the login code, and leave the rest for when we actually need it
  • wrap the code that creates the ContactsView and ContactsPresenter in a runAsync() call
  • as optimizations such as this one become easier and easier to implement.
Ace Dee

SEO Services that Exceeds Expectations - 1 views

Oracle Digital impressed me greatly with their content, knowledge and passion for the industry. After following Oracle Digital for three months and liking what I saw, I approached them for an initi...

SEO Perth Brisbane

started by Ace Dee on 21 Feb 11 no follow-up yet
samantha armstrong

FixComputerpProblemsSite Surely Knows How to Fix Computer Problems! - 1 views

I was having problems with my laptop before. Good thing FixComputerpProblemsSite helped me fix it. And they are really the experts when it comes to solving any computer related issues. They can eas...

fix computer problems java web development opensource framework programming eclipse spring jsf library

started by samantha armstrong on 07 Jun 11 no follow-up yet
shalani mujer

One on One Professional Online Tech Support - 3 views

I love working with these guys. Their tech support technicians are very professional and polite. They offer one-on-one tech support. They listen to what your issues are, diagnose what your problem ...

tech support

started by shalani mujer on 06 Jun 11 no follow-up yet
sally pearson

Renewing My Remote Computer Help Subscription - 3 views

My friend recommended ComputerHelpFastOnline - an emerging team of computer savvy tech support professionals - to provide computer help for my business. Thank God I heeded his words because since I...

computer help

started by sally pearson on 06 Jun 11 no follow-up yet
1 - 20 of 29 Next ›
Showing 20 items per page