View Javadoc

1   /*
2    * Copyright 2011 Fraunhofer Gesellschaft, Munich, Germany,
3    * for its Fraunhofer Institute for Computer Architecture and Software
4    * Technology (FIRST), Berlin, Germany. All rights reserved.
5    * http://www.first.fraunhofer.de/
6    */
7   
8   package net.kwfgrid.gwes;
9   
10  import net.kwfgrid.gwes.exception.LoggingException;
11  import org.apache.log4j.Logger;
12  import org.ietf.jgss.GSSException;
13  
14  import java.text.SimpleDateFormat;
15  import java.util.Date;
16  import java.io.IOException;
17  
18  /**
19   * @author Andreas Hoheisel (<a href="http://www.andreas-hoheisel.de">www.andreas-hoheisel.de</a>)
20   * @version $Id$
21   */
22  public class GWESBasicLogger extends GWESLogger {
23  
24      /**
25       * log4j logger
26       */
27      static final private Logger logger = Logger.getLogger(GWESBasicLogger.class);
28  
29      static final private SimpleDateFormat dateAndTime=new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss Z");
30  
31      @Override
32      protected void logEventLevelChecked(Event event, EventOutcome eventOutcome, String userID, Object object, String[] paramNames, String[] oldValues, String[] newValues, Throwable exception)
33              throws LoggingException {
34          StringBuffer buf = new StringBuffer();
35          if (userID!=null) buf.append("userId=\"").append(userID).append("\"");
36          Date date = new Date(System.currentTimeMillis());
37          buf.append(" [").append(dateAndTime.format(date)).append("]");
38          buf.append(" gwesID=\"").append(getGwesId()).append("\"");
39          buf.append(" event=\"").append(event.name()).append("\"");
40          buf.append(" eventOutcome=\"").append(eventOutcome.name()).append("\"");
41          if (object !=null) {
42              if (object instanceof GenericWorkflowHandler) {
43                  // logging for workflow handler
44                  GenericWorkflowHandler handler = (GenericWorkflowHandler) object;
45                  buf.append(" handlerID=\"").append(handler.getID()).append("\"");
46              } else if (object instanceof Activity) {
47                  // logging for activities
48                  Activity activity = (Activity) object;
49                  buf.append(" activityID=\"").append(activity.getID()).append("\"");
50                  buf.append(" operationName=\"").append(activity.getOperationName()).append("\"");
51                  buf.append(" resourceName=\"").append(activity.getResourceName()).append("\"");
52                  if (activity.getTransitionOccurrence() != null) {
53                      buf.append(" transitionOccurrence=\"").append(activity.getTransitionOccurrence()).append("\"");
54                  }
55              } else if (object instanceof CredentialManager) {
56                  // logging for credential manager
57                  CredentialManager credentialManager = (CredentialManager) object;
58                  try {
59                      buf.append(" DN=\"").append(credentialManager.getDN()).append("\"");
60                      buf.append(" remainingLifetime=\"").append(credentialManager.getCredential().getRemainingLifetime()).append("s\"");
61                  } catch (GSSException e) {
62                      throw new LoggingException("Could not log credential information: " + e, e);
63                  } catch (IOException e) {
64                      throw new LoggingException("Could not log credential information: " + e, e);
65                  }
66              }
67          }
68          if (paramNames!=null) {
69              for (int i=0; i<paramNames.length; i++) {
70                  buf.append(" ").append(paramNames[i]).append("=");
71                  if (oldValues!=null && i<oldValues.length && oldValues[i]!=null) buf.append("\"").append(oldValues[i]).append("\"").append("->");
72                  if (newValues!=null && i<newValues.length && newValues[i]!=null) buf.append("\"").append(newValues[i]).append("\"");
73              }
74          }
75          if (exception != null) {
76              buf.append(" exception=\"").append(exception.getMessage()).append("\"");
77          }
78          
79          switch (eventOutcome) {
80              case SUCCESS:
81                  logger.info(buf.toString());
82                  break;
83              case WARNING:
84                  logger.warn(buf.toString());
85                  break;
86              case ERROR:
87                  logger.error(buf.toString());
88                  break;
89              case FATAL:
90                  logger.fatal(buf.toString());
91                  break;
92          }
93      }
94  }