Blame view

src/main/java/eu/omp/irap/vespa/epntapclient/utils/Log.java 3.35 KB
eb1414bb   Nathanael Jourdane   Minor style modif...
1
/*
2ad62d51   Nathanael Jourdane   Add Logger and er...
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 * This file is a part of EpnTAPClient.
 * This program aims to provide EPN-TAP support for software clients, like CASSIS spectrum analyzer.
 * See draft specifications: https://voparis-confluence.obspm.fr/pages/viewpage.action?pageId=559861
 * Copyright (C) 2016 Institut de Recherche en Astrophysique et Planétologie.
 * 
 * This program is free software: you can
 * redistribute it and/or modify it under the terms of the GNU General Public License as published
 * by the Free Software Foundation, either version 3 of the License, or (at your option) any later
 * version. This program is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 * PURPOSE. See the GNU General Public License for more details. You should have received a copy of
 * the GNU General Public License along with this program. If not, see
 * <http://www.gnu.org/licenses/>.
 */
eb1414bb   Nathanael Jourdane   Minor style modif...
16

2ad62d51   Nathanael Jourdane   Add Logger and er...
17
18
package eu.omp.irap.vespa.epntapclient.utils;

e6aee5d0   Nathanael Jourdane   Improve the Log c...
19
20
21
22
23
24
25
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
7706bfa4   Nathanael Jourdane   Use log4j as logg...
26
27

import org.apache.log4j.Logger;
2ad62d51   Nathanael Jourdane   Add Logger and er...
28

e6aee5d0   Nathanael Jourdane   Improve the Log c...
29
30
31
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

7706bfa4   Nathanael Jourdane   Use log4j as logg...
32
33
import eu.omp.irap.vespa.epntapclient.EpnTapMainApp;

2ad62d51   Nathanael Jourdane   Add Logger and er...
34
/**
7706bfa4   Nathanael Jourdane   Use log4j as logg...
35
 * Simple class to provide logging features
2ad62d51   Nathanael Jourdane   Add Logger and er...
36
37
38
39
 * 
 * @author N. Jourdane
 */
public class Log {
7706bfa4   Nathanael Jourdane   Use log4j as logg...
40
41
	/** The logger for this class. */
	private static final Logger logger = Logger.getLogger(EpnTapMainApp.class);
a7aff3e3   Nathanael Jourdane   Fix Sonar issues
42

7706bfa4   Nathanael Jourdane   Use log4j as logg...
43
44
	/** The log file path used by `logInFile` and `clearLogFile`. */
	private static String logPath = Const.TMP_DIR + "/log";
4dd68979   Nathanael Jourdane   Improve Exception...
45

a7aff3e3   Nathanael Jourdane   Fix Sonar issues
46
47
48
	/** Constructor to hide the implicit public one. */
	private Log() {
	}
e6aee5d0   Nathanael Jourdane   Improve the Log c...
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

	/**
	 * Print the specified object in JSON format in a file on the temp directory. The default file
	 * name is "log.json"
	 * 
	 * @param obj the object to print in a file.
	 * @return The path of the file.
	 */
	public static String printObject(Object obj) {
		return printObject("log", obj);
	}

	/**
	 * Print the specified object in JSON format in a file on the temp directory.
	 * 
	 * @param title The name of the file.
	 * @param obj the object to print in a file.
	 * @return The path of the file.
	 */
	public static String printObject(String title, Object obj) {
		Gson gson = new GsonBuilder().setPrettyPrinting().create();
		String json = gson.toJson(obj);
		String path = Const.TMP_DIR + "/" + title + ".json";
		try (FileWriter writer = new FileWriter(path)) {
			writer.write(json);

		} catch (IOException e) {
7706bfa4   Nathanael Jourdane   Use log4j as logg...
76
			logger.error("Can not print in the file " + path, e);
e6aee5d0   Nathanael Jourdane   Improve the Log c...
77
78
79
80
81
		}

		return path;
	}

7706bfa4   Nathanael Jourdane   Use log4j as logg...
82
	// TODO: Use log4j FileAppender instead
e6aee5d0   Nathanael Jourdane   Improve the Log c...
83
84
85
86

	/**
	 * Delete the content of the log file.
	 */
7706bfa4   Nathanael Jourdane   Use log4j as logg...
87
88
	public static void clearLogFile() {
		try (PrintWriter writer = new PrintWriter(logPath)) {
e6aee5d0   Nathanael Jourdane   Improve the Log c...
89
90
			writer.print("");
		} catch (FileNotFoundException e) {
7706bfa4   Nathanael Jourdane   Use log4j as logg...
91
			logger.error("File " + logPath + " not found, can not clear it.", e);
e6aee5d0   Nathanael Jourdane   Improve the Log c...
92
93
94
		}
	}

7706bfa4   Nathanael Jourdane   Use log4j as logg...
95
96
	// TODO: Use log4j FileAppender instead

e6aee5d0   Nathanael Jourdane   Improve the Log c...
97
98
99
100
101
102
	/**
	 * Print a message in a log file (named "log").
	 * 
	 * @param text The text to log in the file
	 */
	public static void logInFile(Object text) {
7706bfa4   Nathanael Jourdane   Use log4j as logg...
103

e6aee5d0   Nathanael Jourdane   Improve the Log c...
104
		try {
7706bfa4   Nathanael Jourdane   Use log4j as logg...
105
			Files.write(Paths.get(logPath), (text.toString() + "\n").getBytes(),
e6aee5d0   Nathanael Jourdane   Improve the Log c...
106
107
					StandardOpenOption.APPEND);
		} catch (IOException e) {
7706bfa4   Nathanael Jourdane   Use log4j as logg...
108
			logger.error("Can not print in the file " + logPath, e);
e6aee5d0   Nathanael Jourdane   Improve the Log c...
109
110
111
		}
	}

2ad62d51   Nathanael Jourdane   Add Logger and er...
112
}