package org.molgenis.data.jobs;
import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.AppenderBase;
import org.molgenis.data.jobs.model.JobExecution;
/**
* Appender that appends to the log attribute of a {@link JobExecution} entity.
*/
public class JobExecutionLogAppender extends AppenderBase<ILoggingEvent>
{
private PatternLayout layout;
private void createLayout()
{
layout = new PatternLayout();
layout.setPattern("%d{HH:mm:ss.SSS} - %msg%n%nopex");
layout.setContext(getContext());
layout.start();
}
@Override
public void start()
{
createLayout();
super.start();
}
@Override
protected void append(ILoggingEvent eventObject)
{
String formattedMessage = layout.doLayout(eventObject);
JobExecution jobExecution = JobExecutionContext.get();
String oldLog = jobExecution.getLog();
String newLog = oldLog == null ? formattedMessage : oldLog + formattedMessage;
jobExecution.setLog(newLog);
}
}