net.acesinc.data.json.generator.log.FileLogger.java Source code

Java tutorial

Introduction

Here is the source code for net.acesinc.data.json.generator.log.FileLogger.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package net.acesinc.data.json.generator.log;

import java.io.File;
import java.io.IOException;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 *
 * @author andrewserff
 */
public class FileLogger implements EventLogger {

    private static final Logger log = LogManager.getLogger(FileLogger.class);
    public static final String OUTPUT_DIRECTORY_PROP_NAME = "output.directory";
    public static final String FILE_PREFIX_PROP_NAME = "file.prefix";
    public static final String FILE_EXTENSION_PROP_NAME = "file.extension";

    private File outputDirectory;
    private String filePrefix;
    private String fileExtension;

    public FileLogger(Map<String, Object> props) throws IOException {
        String outputDir = (String) props.get(OUTPUT_DIRECTORY_PROP_NAME);
        outputDirectory = new File(outputDir);
        if (!outputDirectory.exists()) {
            if (!outputDirectory.mkdir()) {
                if (!outputDirectory.mkdirs()) {
                    throw new IOException("Output directory does not exist and we are unable to create it");
                }
            }
        }
        filePrefix = (String) props.get(FILE_PREFIX_PROP_NAME);
        fileExtension = (String) props.get(FILE_EXTENSION_PROP_NAME);
    }

    @Override
    public void logEvent(String event, Map<String, Object> producerConfig) {
        logEvent(event);
    }

    private void logEvent(String event) {
        try {
            File f = File.createTempFile(filePrefix, fileExtension, outputDirectory);
            FileUtils.writeStringToFile(f, event, "UTF-8");
        } catch (IOException ioe) {
            log.error("Unable to create temp file");
        }

    }

    @Override
    public void shutdown() {
        //we don't need to shut anything down
    }

}