Problemer med log4j - syntes ikke jeg får noget output
HejsaEfter at have fulgt Arnes artikkel omkring loggin frameworks, har jeg forsøgt mig med log4j.
log4j.xml har jeg efter Arnes anvisning anbragt i WEB-INF/classes
Understående javafil benyttes via en jsp side, men jeg syntes ikke der sker noget når jeg fx laver et login. Det skal lige understreges at jeg blot afvikler applikationen via JDEVs indbyggede OC4J server, men det burde vel ikke gøre nogen forskel.
Filen log4.log oprettes heller ikke på min mac.
Håber nogen kan hjælpe mig videre.
Følgende output kommer i JDEVs konsol:
Target URL -- http://10.0.1.201:8988/Banankasse-context-root/log_ind.jsp
05/07/25 20:15:59 log4j: Threshold ="null".
05/07/25 20:15:59 log4j: Retreiving an instance of org.apache.log4j.Logger.
05/07/25 20:15:59 log4j: Setting [DatabaseLogger] additivity to [true].
05/07/25 20:15:59 log4j: Level value for DatabaseLogger is [error].
05/07/25 20:15:59 log4j: DatabaseLogger level set to ERROR
05/07/25 20:15:59 log4j: Class name: [org.apache.log4j.ConsoleAppender]
05/07/25 20:15:59 log4j: Setting property [threshold] to [INFO].
05/07/25 20:15:59 log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
05/07/25 20:16:00 log4j: Setting property [conversionPattern] to [%-30c %d %-5p %m%n].
05/07/25 20:16:00 log4j: Adding appender named [console] to category [DatabaseLogger].
05/07/25 20:16:00 log4j: Class name: [org.apache.log4j.FileAppender]
05/07/25 20:16:00 log4j: Setting property [threshold] to [ERROR].
05/07/25 20:16:00 log4j: Setting property [file] to [log4j.log].
05/07/25 20:16:00 log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
05/07/25 20:16:00 log4j: Setting property [conversionPattern] to [%-30c %d %-5p %m%n].
05/07/25 20:16:00 log4j: setFile called: log4j.log, true
05/07/25 20:16:00 log4j: setFile ended
05/07/25 20:16:00 log4j: Adding appender named [logfile] to category [DatabaseLogger].
*********Database.java**************
package ausumnet;
import java.sql.*;
import javax.servlet.*;
import org.apache.log4j.*;
public class Database
{
private final static Logger dbLogger = Logger.getLogger("DatabaseLogger");
private ServletContext application = null;
private Connection conn=null; //our connnection to the db - presist for life of program
private PreparedStatement pstmLoginOk;
private PreparedStatement pstmOpretBruger;
private PreparedStatement pstmRegLogin;
private PreparedStatement pstmRegLogin2;
private PreparedStatement pstmRegLogin3;
private ResultSet rsLoginOk;
private ResultSet rsRegLogin;
public Database(ServletContext application) throws Exception // note more general exception
{
this.application = application;
}
public boolean open()
{
if(conn!=null) return true;
else
{
try
{
String drv=null, url=null, bru=null, adg=null;
if(application!=null){
drv = application.getInitParameter("dbDriver");
dbLogger.info("Database.open() - dbDriver indlæst fra web.xlm");
url = application.getInitParameter("dbUrl");
dbLogger.info("Database.open() - dbUrl indlæst fra web.xlm");
bru = application.getInitParameter("dbBruger");
dbLogger.info("Database.open() - dbBruger indlæst fra web.xlm");
adg = application.getInitParameter("dbAdgangskode");
dbLogger.info("Database.open() - dbAdgangskode indlæst fra web.xlm");
}
if(drv==null)
{
drv = "com.mysql.jdbc.Driver";
dbLogger.info("Database.open() - dbDriver indlæst fra metoden");
}
if(url==null)
{
url = "jdbc:mysql:///Banankasse";
dbLogger.info("Database.open() - dbUrl indlæst fra metoden");
}
if(bru==null)
{
bru = "root";
dbLogger.info("Database.open() - dbBruger indlæst fra metoden");
}
if(adg==null)
{
adg = "";
dbLogger.info("Database.open() - dbAdgangskode indlæst fra metoden");
}
Class.forName(drv); //indlæs driver
dbLogger.info("Database.open() - driver indlæst");
conn = DriverManager.getConnection(url, bru, adg); //opret forbindelse
dbLogger.info("Database.open() - forbindelse til db oprettet( conn = DriverManager.getConnection(url, bru, adg); )");
pstmLoginOk = conn.prepareStatement("SELECT brugernavn FROM BKBruger WHERE brugernavn=? AND password=?");
pstmOpretBruger = conn.prepareStatement("INSERT INTO BKBruger(brugernavn,password,fornavn,efternavn,email,foedselsdato,mobil,fastnet,mailBanan,mailForum,regDato,sidsteLogin,billede, antalLogin) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
pstmRegLogin = conn.prepareStatement("UPDATE BKBruger SET sidsteLogin= ? WHERE brugernavn = ?");
pstmRegLogin2 = conn.prepareStatement("SELECT antalLogin FROM BKBruger WHERE brugernavn = ?");
pstmRegLogin3 = conn.prepareStatement("UPDATE BKBruger SET antalLogin = ? WHERE brugernavn = ?");
dbLogger.info("Database.open() - prepared statements indlæst");
}
catch(ClassNotFoundException e){
dbLogger.error("Database.open() - Problemer med databasen - ClassNotFoundException: "+e);
System.out.println("Problemer med databasen - ClassNotFoundException: "+e);
conn = null; //sæt forbindelsen til null og prøv at oprette den senere
return false;
}
catch(SQLException e){
dbLogger.error("Database.open() - Problemer med databasen - SQLException: "+e);
System.out.println("Problemer med databasen - SQLException: "+e);
conn = null; //sæt forbindelsen til null og prøv at oprette den senere
return false;
}
return true;
}
}
public void shutdown() throws SQLException {
if(conn!=null)
{
try
{
conn.close(); // if there are no other open connection
// db writes out to files and shuts down
// this happens anyway at garbage collection
// when program ends
pstmLoginOk.close();
pstmOpretBruger.close();
pstmRegLogin.close();
pstmRegLogin2.close();
pstmRegLogin3.close();
conn=null;
dbLogger.info("Database.shutdown() - forbindelse til database lukket");
}
catch (SQLException e)
{
dbLogger.error("Database.shutdown() - Problemer med at lukke forbindelse til database: "+e);
e.printStackTrace(System.out);
}
}
}
/**
* Ud fra det indtastede brugernavn og password logges brugeren ind, hvis der
* findes en bruger med det pågældende brugernavn og password
* @return
* @param password
* @param brugernavn
*/
public synchronized boolean loginOk(String brugernavn, String password)
{
boolean loggetInd = false;
try{
if (open())
{
pstmLoginOk.setString(1, brugernavn);
pstmLoginOk.setString(2, password);
rsLoginOk = pstmLoginOk.executeQuery();
if (rsLoginOk.next())
{
loggetInd = true; //korrekt! brugeren er logget ind.
dbLogger.info("Database.loginOk() - Bruger logget ind: "+brugernavn);
}
else
{
loggetInd = false;
dbLogger.info("Database.loginOk() - Forkert brugernavn eller password - brugernavn: "+brugernavn);
}
rsLoginOk.close();
pstmLoginOk.clearParameters();;
}
}
catch(SQLException e){
dbLogger.error("Database.loginOk() - Problemer med at tjekke login: "+e);
System.out.println("Problemer med tjekLogin - SQLException: "+e);
}
return loggetInd;
}
/**
* Ud fra bønnen Login oprettes brugeren i BKBruger.
* @return
* @param nytPassword
* @param login
*/
public synchronized boolean opretBruger(Login login, String nytPassword)
{
if (open())
try{
pstmOpretBruger.setString(1, login.getBrugernavn());
pstmOpretBruger.setString(2, nytPassword);
pstmOpretBruger.setString(3, login.getFornavn());
pstmOpretBruger.setString(4, login.getEfternavn());
pstmOpretBruger.setString(5, login.getEmail());
pstmOpretBruger.setDate(6, login.konverterTilDate(login.getFoedselsdato()));
pstmOpretBruger.setString(7, login.getMobil());
pstmOpretBruger.setString(8, login.getFastnet());
pstmOpretBruger.setInt(9, (login.getMailBanan() ? 1 : 0));
pstmOpretBruger.setInt(10, (login.getMailForum() ? 1 : 0));
pstmOpretBruger.setTimestamp(11, new Timestamp(new java.util.Date().getTime()));
pstmOpretBruger.setDate(12, null);
pstmOpretBruger.setString(13, "billedesti");
pstmOpretBruger.setInt(14, 0);
pstmOpretBruger.executeUpdate();
pstmOpretBruger.clearParameters();
dbLogger.info("Database.opretBruger() - Bruger oprettet korrekt - brugernavn: "+login.getBrugernavn());
return true; //oprettelse lykkedes!
}
catch(SQLException e){
dbLogger.error("Database.opretBruger() - Problemer med opretBruger - SQLException: "+e);
System.out.println("Problemer med opretBruger - SQLException: "+e);
return false;
}
catch(Exception e){
dbLogger.error("Database.opretBruger() - Problemer med opretBruger - SQLException: "+e);
System.out.println("Problemer med opretBruger - Exception: "+e);
return false;
}
else
return false;
}
/**
* I BKBruger opdateres felterne sidsteLogin og antalLogin
* sidsteLogin sættes ud fra tidspunktet på det aktuelle login
* antalLogin tælles een op.
* @param brugernavn
*/
public synchronized void regLogin(String brugernavn)
{
try{
if (open())
{
pstmRegLogin.setTimestamp(1, new Timestamp(new java.util.Date().getTime()));
pstmRegLogin.setString(2,brugernavn);
pstmRegLogin.executeUpdate();
pstmRegLogin.clearParameters();
dbLogger.info("Database.regLogin() - sidsteLogin opdateret");
pstmRegLogin2.setString(1, brugernavn);
rsRegLogin = pstmRegLogin2.executeQuery();
if(rsRegLogin.next())
{
int antalLogin = rsRegLogin.getInt("antalLogin");
antalLogin++;
pstmRegLogin3.setInt(1, antalLogin);
pstmRegLogin3.setString(2, brugernavn);
pstmRegLogin3.executeUpdate();
pstmRegLogin3.clearParameters();
dbLogger.info("Database.regLogin() - antalLogin opdateret");
}
rsRegLogin.close();
pstmRegLogin2.clearParameters();
}
}
catch(SQLException e){
dbLogger.error("Database.regLogin() - Problemer med regLogin - SQLException: "+e);
System.out.println("Problemer med regLogin - SQLException: "+e);
}
}
}
**************SLUT Database.java**************
**************log4j.xml*******************
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
<!--
console: minimum level=info, special format
-->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="info"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-30c %d %-5p %m%n"/>
</layout>
</appender>
<!--
logfile: minmum level=debug, fil=log4.log, special format
-->
<appender name="logfile" class="org.apache.log4j.FileAppender">
<param name="threshold" value="error"/>
<param name="file" value="log4j.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-30c %d %-5p %m%n"/>
</layout>
</appender>
<!--
Log3 logger: minimum level=debug, two appenders (logfile + console)
-->
<logger name="DatabaseLogger">
<level value="error"/>
<appender-ref ref="console"/>
<appender-ref ref="logfile"/>
</logger>
</log4j:configuration>
****************SLUT log4j.xml************
