Skip to content

Commit

Permalink
Harvester / Localfilesystem / Log properly to harvester log file. (ge…
Browse files Browse the repository at this point in the history
…onetwork#7660)

* Harvester / Localfilesystem / Log properly to harvester log file.

Follow up of geonetwork#2765
and fix harvester logger which was not reporting any error anymore into the harvester logfile that user can download after harvest.

![image](https://github.com/geonetwork/core-geonetwork/assets/1701393/d84e643f-6713-4821-9d04-bde2e9c1c911)

It only reports:
```
2024-01-25T11:06:22,547 WARN  [geonetwork.harvester] - Start of alignment for : SEANOE
2024-01-25T11:08:25,135 INFO  [geonetwork.harvester] - Ended harvesting from node : SEANOE (LocalFilesystemHarvester)
```

If using the harvester logger as before, then the log file properly contains errors
```
2024-01-25T11:06:22,547 WARN  [geonetwork.harvester] - Start of alignment for : SEANOE
2024-01-25T11:06:55,675 ERROR [geonetwork.harvester] - Error transforming JSON into XML from file /data/75639.json, ignoring
2024-01-25T11:07:33,893 ERROR [geonetwork.harvester] - Error transforming JSON into XML from file /data/59178.json, ignoring
2024-01-25T11:08:25,135 INFO  [geonetwork.harvester] - Ended harvesting from node : SEANOE (LocalFilesystemHarvester)
```

To test, try to import a file which whill trigger error like invalid
XML.

* Harvester / Localfilesystem / Remove duplicated privileges deletion and add option to append privileges (in case user wants to also manage locally privileges).

* Update LocalFilesystemHarvester.java
  • Loading branch information
fxprunayre committed Mar 4, 2024
1 parent e349d89 commit 3265c37
Show file tree
Hide file tree
Showing 9 changed files with 180 additions and 81 deletions.
53 changes: 33 additions & 20 deletions common/src/main/java/org/fao/geonet/Logger.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@

package org.fao.geonet;

//=============================================================================

import org.apache.logging.log4j.core.appender.FileAppender;

/**
Expand All @@ -37,87 +35,102 @@ public interface Logger {
*
* @return check if debug logging is enabled
*/
public boolean isDebugEnabled();
boolean isDebugEnabled();

/**
* Log debug message used indicate module troubleshoot module activity.
*
* @param message debug message used to provide in
*/
public void debug(String message);
void debug(String message);

void debug(String message, Throwable throwable);

void debug(String message, Object... object);

/**
* Log information message indicating module progress.
*
* @param message information message indicating progress
*/
public void info(String message);
void info(String message);

void info(String message, Throwable throwable);

/** Log warning message indicating potentially harmful situation, module
void info(String message, Object... object);

/**
* Log warning message indicating potentially harmful situation, module
* will continue to try and complete current activity.
*
* @param message Warning message indicating potentially harmful situation
*/
public void warning(String message);
void warning(String message);

void warning(String message, Throwable throwable);

void warning(String message, Object... object);

/**
* Log error message indicating module cannot continue current activity.
*
* @param message Error message
*/
public void error(String message);
void error(String message);

void error(String message, Throwable throwable);

void error(String message, Object... object);

/**
* Log error message using provided throwable, indicating module cannot continue
* current activity.
*
* @param ex Cause of error condition.
*/
public void error(Throwable ex);
void error(Throwable ex);

/**
* Log severe message, indicating application cannot continue to operate.
*
* @param message severe message
*/
public void fatal(String message);
void fatal(String message);

/**
* Functional module used for logging messages (for example {@code jeeves.engine}).
*
* @return functional module used for logging messages.
*/
public String getModule();
String getModule();

/**
* Configure logger with log4j {@link FileAppender}, used for output.
*
* <p>
* The file appender is also responsible for log file location provided by {@link #getFileAppender()}.
*
* @param fileAppender Log4j FileAppender
*/
public void setAppender(FileAppender fileAppender);
void setAppender(FileAppender fileAppender);

/**
* The log file name from the file appender for this module.
*
* <p>
* Note both module and fallback module are provided allowing providing a better opportunity
* to learn the log file location. Harvesters use the log file name parent directory as a good
* location to create {@code /harvester_logs/} folder.
*
* <p>
* Built-in configuration uses log file location {@code logs/geonetwork.log} relative to the current directory, or relative to system property {@code log_file}.
*
* @return logfile location of {@code logs/geonetwork.log} file
*/
public String getFileAppender();
String getFileAppender();

/**
* Access to omodule logging level, providing
*
* @return
*/
public org.apache.logging.log4j.Level getThreshold();
org.apache.logging.log4j.Level getThreshold();

}

//=============================================================================

73 changes: 63 additions & 10 deletions common/src/main/java/org/fao/geonet/utils/Log.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,18 @@
package org.fao.geonet.utils;


import org.apache.log4j.Priority;
import org.apache.log4j.bridge.AppenderWrapper;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.FileAppender;
import org.apache.logging.log4j.core.appender.RollingFileAppender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;

import java.io.File;
import java.util.Enumeration;

//=============================================================================

/**
* Jeeves logging integration, defining functional logger categories by module
Expand Down Expand Up @@ -125,8 +121,12 @@ public static void debug(String module, Object message) {
LogManager.getLogger(module).debug(message);
}

public static void debug(String module, Object message, Exception e) {
LogManager.getLogger(module).debug(message, e);
public static void debug(String module, String message, Object... objects) {
LogManager.getLogger(module).debug(message, objects);
}

public static void debug(String module, String message, Throwable throwable) {
LogManager.getLogger(module).debug(message, throwable);
}

public static boolean isDebugEnabled(String module) {
Expand Down Expand Up @@ -157,10 +157,15 @@ public static void info(String module, Object message) {
LogManager.getLogger(module).info(message);
}

public static void info(String module, Object message, Throwable t) {
LogManager.getLogger(module).info(message, t);
public static void info(String module, String message, Object... objects) {
LogManager.getLogger(module).info(message, objects);
}

public static void info(String module, String message, Throwable throwable) {
LogManager.getLogger(module).info(message, throwable);
}


//---------------------------------------------------------------------------

public static void warning(String module, Object message) {
Expand All @@ -182,6 +187,14 @@ public static void error(String module, Object message, Throwable t) {
LogManager.getLogger(module).error(message, t);
}

public static void error(String module, String message, Object... objects) {
LogManager.getLogger(module).error(message, objects);
}

public static void error(String module, String message, Throwable throwable) {
LogManager.getLogger(module).error(message, throwable);
}

//---------------------------------------------------------------------------

public static void fatal(String module, Object message) {
Expand Down Expand Up @@ -225,18 +238,58 @@ public void debug(String message) {
Log.debug(module, message);
}

@Override
public void debug(String message, Throwable throwable) {
Log.debug(module, message, throwable);
}

@Override
public void debug(String message, Object... object) {
Log.debug(module, message, object);
}

public void info(String message) {
Log.info(module, message);
}

@Override
public void info(String message, Throwable throwable) {
Log.info(module, message, throwable);
}

@Override
public void info(String message, Object... object) {
Log.info(module, message, object);
}

public void warning(String message) {
Log.warning(module, message);
}

@Override
public void warning(String message, Throwable throwable) {
Log.warning(module, message, throwable);
}

@Override
public void warning(String message, Object... object) {

}

public void error(String message) {
Log.error(module, message);
}

@Override
public void error(String message, Throwable throwable) {
Log.error(module, message, throwable);
}

@Override
public void error(String message, Object... object) {
Log.error(module, message, object);
}

public void fatal(String message) {
Log.fatal(module, message);
}
Expand Down Expand Up @@ -279,7 +332,7 @@ public String getFileAppender() {
}
}
LoggerConfig fallbackConfig = configuration.getLoggers().get(fallbackModule);
if( fallbackConfig != null) {
if (fallbackConfig != null) {
for (Appender appender : fallbackConfig.getAppenders().values()) {
File file = toLogFile(appender);
if (file != null && file.exists()) {
Expand Down
43 changes: 40 additions & 3 deletions core/src/main/java/jeeves/server/context/BasicContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -143,21 +143,61 @@ public void debug(final String message) {
logger.debug(message);
}

@Override
public void debug(String message, Throwable throwable) {
logger.debug(message, throwable);
}

@Override
public void debug(String message, Object... object) {
logger.debug(message, object);
}

@Override
public void info(final String message) {
logger.info(message);
}

@Override
public void info(String message, Throwable throwable) {
logger.info(message, throwable);
}

@Override
public void info(String message, Object... object) {
logger.info(message, object);
}

@Override
public void warning(final String message) {
logger.warning(message);
}

@Override
public void warning(String message, Throwable throwable) {
logger.warning(message, throwable);
}

@Override
public void warning(String message, Object... object) {
logger.warning(message, object);
}

@Override
public void error(final String message) {
logger.error(message);
}

@Override
public void error(String message, Throwable throwable) {
logger.error(message, throwable);
}

@Override
public void error(String message, Object... object) {
logger.error(message, object);
}

@Override
public void error(Throwable ex) {
logger.error(ex);
Expand Down Expand Up @@ -200,6 +240,3 @@ public String getNodeId() {
return NodeInfo.DEFAULT_NODE;
}
}

//=============================================================================

Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,9 @@ public void addPrivileges(String id, Iterable<Privileges> privilegesIterable, Gr
String name = localGroups.getName(priv.getGroupId());

if (name == null) {
LOGGER.debug(" - Skipping removed group with id:{}", priv.getGroupId());
LOGGER.debug(" - Skipping removed group with id: {}", priv.getGroupId());
} else {
LOGGER.debug(" - Setting privileges for group : {}", name);
LOGGER.debug(" - Setting privileges for group: {}", name);
for (int opId : priv.getOperations()) {
name = dataManager.getAccessManager().getPrivilegeName(opId);
//--- all existing operation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,12 @@ public abstract class AbstractHarvester<T extends HarvestResult, P extends Abstr
protected P params;
protected T result;


protected Logger log = Log.createLogger(Geonet.HARVESTER);

public Logger getLogger() {
return log;
}
private Element loadedInfo;
private String id;
private volatile Status status;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@
import org.fao.geonet.kernel.harvest.harvester.HarvestResult;
import org.fao.geonet.kernel.search.IndexingMode;
import org.fao.geonet.repository.MetadataRepository;
import org.fao.geonet.repository.OperationAllowedRepository;
import org.fao.geonet.repository.specification.MetadataSpecs;
import org.fao.geonet.utils.IO;
import org.jdom.Element;
Expand Down Expand Up @@ -158,8 +157,6 @@ void updateMetadata(Element xml, final String id, GroupMapper localGroups, final
metadataManager.save(metadata);
}

OperationAllowedRepository repository = context.getBean(OperationAllowedRepository.class);
repository.deleteAllByMetadataId(Integer.parseInt(id));
aligner.addPrivileges(id, params.getPrivileges(), localGroups, context);

metadata.getCategories().clear();
Expand Down
Loading

0 comments on commit 3265c37

Please sign in to comment.