[prev in list] [next in list] [prev in thread] [next in thread] 

List:       log4j-user
Subject:    Re: No appenders could be found for logger (poker.Deck) [WARN]
From:       Christian Grobmeier <grobmeier () gmail ! com>
Date:       2011-04-24 15:52:51
Message-ID: BANLkTincjMa28sZhxO-e6dZaBEm=mL=Xcg () mail ! gmail ! com
[Download RAW message or body]

i recommend you to read the whole manual
http://logging.apache.org/log4j/1.2/manual.html

The solution was in "how to configure appender" (from mind)

However, read all and you will be very glad about this lecture, I promise

On Sun, Apr 24, 2011 at 5:41 PM, Jonathan Camilleri
<camilleri.jon@gmail.com> wrote:
> Would you kindly indicate a specific section of the manual to refer to for
> resolving this problem?
>
> On 24 April 2011 14:20, Jonathan Camilleri <camilleri.jon@gmail.com> wrote:
>>
>> Thanks, now I just need to find a way to make file logging work, even,
>> though it's specified in my log4j.properties.
>> Thanks for your help.
>>
>> On 24 April 2011 14:13, Christian Grobmeier <grobmeier@gmail.com> wrote:
>>>
>>> > What do you mean by additivity flag?
>>> please read the link i sent
>>> > I've noticed that replacing the
>>> > _log.debug with System.out.println() does not result in the same error:
>>>
>>> Yes - of course. Your property file shows 2 appenders logging to the
>>> cmd, the root logger and the consoleAppender.
>>>
>>> If you comment the 2 two lines starting with:
>>> log4j.appender.consoleAppender
>>>
>>> it should look cool
>>>
>>> Cheers!
>>>
>>>
>>>  ...
>>> > System.out.println(playerOne);
>>> > ...
>>> > Output
>>> > Player One holds the following cards: THREE of DIAMONDS KING of
>>> > DIAMONDS
>>> > whilst...
>>> > ...
>>> > _log.debug(playerTwo + ".");
>>> > ...
>>> > Output
>>> > 172 [main] DEBUG poker.Poker  - Player Two holds the following cards:
>>> > TEN of
>>> > DIAMONDS SEVEN of SPADES .
>>> > 172 [main] DEBUG poker.Poker  - Player Two holds the following cards:
>>> > TEN of
>>> > DIAMONDS SEVEN of SPADES .
>>> > 172 [main] DEBUG poker.Poker  - Player Two holds the following cards:
>>> > TEN of
>>> > DIAMONDS SEVEN of SPADES .
>>> > ...
>>> >
>>> > On 24 April 2011 13:22, Christian Grobmeier <grobmeier@gmail.com>
>>> > wrote:
>>> >>
>>> >> Hey Jonathan,
>>> >>
>>> >> the log4j configuration is more of interest for your case. However, as
>>> >> you now got output, I assume the logging itself is working.
>>> >>
>>> >> Your double entries - for that i am pretty sure - come from the
>>> >> additivity
>>> >> flag.
>>> >>
>>> >> Please go to: http://logging.apache.org/log4j/1.2/manual.html
>>> >> and search for "Appender Additivity"
>>> >>
>>> >> This will help you
>>> >>
>>> >> cheers
>>> >>
>>> >>
>>> >> On Sun, Apr 24, 2011 at 1:17 PM, Jonathan Camilleri
>>> >> <camilleri.jon@gmail.com> wrote:
>>> >> > Well thanks for the information about pom.xml, I'm trying to stick
>>> >> > with
>>> >> > log4j.properties, so I'm attaching a copy of my cmd.log - command
>>> >> > line
>>> >> > log.
>>> >> > I've encountered another weird problem when trying to review the
>>> >> > output
>>> >> > of
>>> >> > Apache log 4j on the console, since some how lines are being written
>>> >> > multiple times, although I suspect this has to do with looping
>>> >> > through
>>> >> > an
>>> >> > ArrayList (a java problem), however, I am not sure, because I
>>> >> > haven't
>>> >> > noticed any flaws in my code:
>>> >> > Code
>>> >> > package poker;
>>> >> > import java.awt.Image;
>>> >> > import java.io.BufferedInputStream;
>>> >> > import java.io.File;
>>> >> > import java.io.FileInputStream;
>>> >> > import java.io.IOException;
>>> >> > import java.io.InputStream;
>>> >> > import java.util.*;
>>> >> > import javax.imageio.ImageIO;
>>> >> > import org.apache.log4j.BasicConfigurator;
>>> >> > import org.apache.log4j.Logger;
>>> >> > public class Poker {
>>> >> > public static void main(String[] args) {
>>> >> > BasicConfigurator.configure();
>>> >> > ...
>>> >> > Player playerOne = new Player("Player One");
>>> >> > playerOne.getCardFromDealer(getTopCard());
>>> >> > playerOne.getCardFromDealer(getTopCard());
>>> >> > _log.debug(playerOne + ".");
>>> >> > _log.debug(playerOne.hashCode());
>>> >> > Player playerTwo = new Player("Player Two");
>>> >> > playerTwo.getCardFromDealer(getTopCard());
>>> >> > playerTwo.getCardFromDealer(getTopCard());
>>> >> > _log.debug(playerTwo + ".");
>>> >> > _log.debug(playerTwo.hashCode());
>>> >> > ...
>>> >> > for (int i = 0; i < deckOfCards.size(); i++) {
>>> >> > _log.debug(deckOfCards.get(i));}
>>> >> > }
>>> >> > private static void getCards (boolean _shuffled) {
>>> >> > short iCount = 0;
>>> >> > for (short suit = 1; suit <= MAX_SUITS_IN_DECK; suit++){
>>> >> > for (short rank = 1; rank <= MAX_RANK_IN_DECK; rank++) {
>>> >> > deckOfCards.add(new Card(suit, rank));
>>> >> > iCount++;
>>> >> > }}
>>> >> > if (_shuffled == true){Collections.shuffle(deckOfCards, new
>>> >> > Random());}
>>> >> > }
>>> >> >
>>> >> > private static Card getTopCard() {
>>> >> > Card _cardRemoved = deckOfCards.get(1);
>>> >> > deckOfCards.remove(1);
>>> >> > return _cardRemoved;
>>> >> > }
>>> >> > private static void readIcons(){
>>> >> >      String _filename;
>>> >> >      //read icons
>>> >> >      Image _image = null;
>>> >> >      File _file = null;
>>> >> >      InputStream _is = null;
>>> >> >      for (int i = 1; i < MAX_CARDS_IN_DECK + 1; i++) {
>>> >> >      try {
>>> >> >      /* Security information: filenames should not be altered
>>> >> > manually
>>> >> > by an
>>> >> > Administrator, and,
>>> >> >      should be available within the same directory where the source
>>> >> > code
>>> >> > runs. */
>>> >> >      if (i < 10) {_filename = "0" + Integer.toString(i);}
>>> >> >      else {_filename = Integer.toString(i);}
>>> >> >      String _temp = _filename;
>>> >> >      _filename = _temp + ".GIF";
>>> >> >      //TODO: Relative path might change when implementing?
>>> >> >      _filename = System.getProperty("user.dir") + "\\img\\" +
>>> >> > _filename;
>>> >> >      _file = new File(_filename);
>>> >> >      //read from an input stream
>>> >> >      _is = new BufferedInputStream (new FileInputStream(_filename));
>>> >> >      _image = ImageIO.read(_is);
>>> >> >      if (_file.exists()) {
>>> >> >      CardIcons.add(_image);
>>> >> >      _log.debug(_filename + " loaded.");
>>> >> >      }
>>> >> >      }
>>> >> >      catch (IOException e) { _log.debug(e.getMessage()); }
>>> >> >      }
>>> >> >     }
>>> >> > private static ArrayList<Image> CardIcons = new ArrayList<Image>();
>>> >> > private static ArrayList<Card> deckOfCards = new ArrayList<Card>();
>>> >> > private static final Logger _log = Logger.getLogger(Poker.class);
>>> >> > public static final short MAX_CARDS_IN_DECK = 52;
>>> >> > public static final short MAX_SUITS_IN_DECK = 4;
>>> >> > public static final short MAX_RANK_IN_DECK = 13;
>>> >> > public static final short MAX_PLAYERS_PER_TABLE = 5;
>>> >> > public static final short MAX_GAMES_PER_SESSION = 1; //TODO:
>>> >> > implement
>>> >> > concurrent games and UI at a later stage.
>>> >> > /* References
>>> >> > * ----------
>>> >> > * Information about poker at http://en.wikipedia.org/wiki/Poker.
>>> >> > * List of poker hands at http://en.wikipedia.org/wiki/Poker_hands.
>>> >> > * Rules for Texas Hold'Em at
>>> >> > http://en.wikipedia.org/wiki/Texas_hold_'em.
>>> >> >  This will be implemented at a later stage.
>>> >> > * Steve Badger, How to Play Poker at
>>> >> > http://www.playwinningpoker.com/articles/how-to-play-poker.
>>> >> > * Graphics to be implemented at a later stage.
>>> >> > */
>>> >> > }
>>> >> > Player.java
>>> >> > ...
>>> >> > public String toString() {
>>> >> > String _cardsHeld = "";
>>> >> > BasicConfigurator.configure();
>>> >> > //TODO: DEBUG grammatical error i.e. comma separating each card and
>>> >> > "."
>>> >> > for
>>> >> > the last card, the last rule is not working as expected.
>>> >> > for (int i = 0; i < CardsHeld.size(); i++) {_cardsHeld +=
>>> >> > CardsHeld.get(i).toString() + " ";}
>>> >> > return (name + " holds the following cards: " + _cardsHeld) ;
>>> >> > }
>>> >> > ...
>>> >> > public int hashCode() {
>>> >> > int _hash = 7;
>>> >> > int _cpCount = this.name.codePointCount(0, name.length());
>>> >> > int _codePointV = 0;
>>> >> > while (_cpCount < this.name.length()) {
>>> >> > _codePointV += this.name.codePointAt(_cpCount);
>>> >> > _cpCount++;
>>> >> > }
>>> >> > _hash = _hash * 31 + _codePointV;
>>> >> > return _hash;
>>> >> > }
>>> >> >
>>> >> > Output
>>> >> > [main] DEBUG poker.Poker  - Player One holds the following cards:
>>> >> > TEN of
>>> >> > HEARTS SEVEN of CLUBS .
>>> >> > 172 [main] DEBUG poker.Poker  - Player One holds the following
>>> >> > cards:
>>> >> > TEN of
>>> >> > HEARTS SEVEN of CLUBS .
>>> >> > 172 [main] DEBUG poker.Poker  - 217
>>> >> > 172 [main] DEBUG poker.Poker  - 217
>>> >> > 172 [main] DEBUG poker.Poker  - Player Two holds the following
>>> >> > cards:
>>> >> > SEVEN
>>> >> > of SPADES TEN of CLUBS .
>>> >> > 172 [main] DEBUG poker.Poker  - Player Two holds the following
>>> >> > cards:
>>> >> > SEVEN
>>> >> > of SPADES TEN of CLUBS .
>>> >> > 172 [main] DEBUG poker.Poker  - Player Two holds the following
>>> >> > cards:
>>> >> > SEVEN
>>> >> > of SPADES TEN of CLUBS .
>>> >> > 172 [main] DEBUG poker.Poker  - 217
>>> >> > 172 [main] DEBUG poker.Poker  - 217
>>> >> > 172 [main] DEBUG poker.Poker  - 217
>>> >> > Rgds,
>>> >> > Jonathan
>>> >> >
>>> >> > On 24 April 2011 11:05, Christian Grobmeier <grobmeier@gmail.com>
>>> >> > wrote:
>>> >> >>
>>> >> >> Hello Jonathan,
>>> >> >>
>>> >> >> this message appears when the log4j.xml|properties file could not
>>> >> >> be
>>> >> >> found on your classpath.
>>> >> >> Usually it should be at src/main/resources, this folder visible as
>>> >> >> classpath folder on eclipse.
>>> >> >>
>>> >> >> However you can start your app with -Dlog4j.debug=true to spot out
>>> >> >> at
>>> >> >> which locations your configuration is searched
>>> >> >>
>>> >> >> Your pom.xml is a maven file and should not have any impact on
>>> >> >> log4j
>>> >> >> (except you need the dependency of course). Same is true for
>>> >> >> eclipse.
>>> >> >> Only th elocation of your config file is important.
>>> >> >>
>>> >> >> Cheers
>>> >> >>
>>> >> >> On Sat, Apr 23, 2011 at 6:53 PM, Jonathan Camilleri
>>> >> >> <camilleri.jon@gmail.com> wrote:
>>> >> >> > Hi,
>>> >> >> > Any idea why my logger is not logging (see Deck.java).  Error
>>> >> >> > message:
>>> >> >> > log4j:WARN No appenders could be found for logger (poker.Deck).
>>> >> >> > log4j:WARN Please initialize the log4j system properly.
>>> >> >> > log4j:WARN See
>>> >> >> > http://logging.apache.org/log4j/1.2/faq.html#noconfig
>>> >> >> > for
>>> >> >> > more info.
>>> >> >> > TWO of CLUBS
>>> >> >> > Having, googled the issue, I tried adding pom.xml to the
>>> >> >> > directory
>>> >> >> > where
>>> >> >> > the
>>> >> >> > source code files reside.  I am using Eclipse 3.6.2, which has an
>>> >> >> > intricate
>>> >> >> > way of adding JARs to my project.
>>> >> >> > Any ideas?
>>> >> >> >
>>> >> >> > --
>>> >> >> > Jonathan Camilleri
>>> >> >> >
>>> >> >> > Mobile (MT): 00356 7982 7113
>>> >> >> > E-mail: camilleri.jon@gmail.com
>>> >> >> > Please consider your environmental responsibility before printing
>>> >> >> > this
>>> >> >> > e-mail.
>>> >> >> >
>>> >> >> > I usually reply to e-mails within 2 business days.  If it's
>>> >> >> > urgent,
>>> >> >> > give
>>> >> >> > me
>>> >> >> > a call.
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> > ---------------------------------------------------------------------
>>> >> >> > To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
>>> >> >> > For additional commands, e-mail:
>>> >> >> > log4j-user-help@logging.apache.org
>>> >> >> >
>>> >> >>
>>> >> >>
>>> >> >>
>>> >> >> --
>>> >> >> http://www.grobmeier.de
>>> >> >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > Jonathan Camilleri
>>> >> >
>>> >> > Mobile (MT): 00356 7982 7113
>>> >> > E-mail: camilleri.jon@gmail.com
>>> >> > Please consider your environmental responsibility before printing
>>> >> > this
>>> >> > e-mail.
>>> >> >
>>> >> > I usually reply to e-mails within 2 business days.  If it's urgent,
>>> >> > give
>>> >> > me
>>> >> > a call.
>>> >> >
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> http://www.grobmeier.de
>>> >
>>> >
>>> >
>>> > --
>>> > Jonathan Camilleri
>>> >
>>> > Mobile (MT): 00356 7982 7113
>>> > E-mail: camilleri.jon@gmail.com
>>> > Please consider your environmental responsibility before printing this
>>> > e-mail.
>>> >
>>> > I usually reply to e-mails within 2 business days.  If it's urgent,
>>> > give me
>>> > a call.
>>> >
>>>
>>>
>>>
>>> --
>>> http://www.grobmeier.de
>>
>>
>>
>> --
>> Jonathan Camilleri
>>
>> Mobile (MT): 00356 7982 7113
>> E-mail: camilleri.jon@gmail.com
>> Please consider your environmental responsibility before printing this
>> e-mail.
>>
>> I usually reply to e-mails within 2 business days.  If it's urgent, give
>> me a call.
>
>
>
> --
> Jonathan Camilleri
>
> Mobile (MT): 00356 7982 7113
> E-mail: camilleri.jon@gmail.com
> Please consider your environmental responsibility before printing this
> e-mail.
>
> I usually reply to e-mails within 2 business days.  If it's urgent, give me
> a call.
>



-- 
http://www.grobmeier.de

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic