创建一个util文件夹
注意:
- 使用框架:如果你使用了某个框架(如 Spring Boot),它可能已经内置了 SLF4J 和其他日志库,因此不需要手动添加。
在util下创建LogUtil
package com.qc.web.ks.master.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LogUtil {
private final static String TAG = "LogUtil";
private static final Logger logger = LoggerFactory.getLogger(LogUtil.class);
public static void outPut(Object log) {
System.out.printf(TAG + ":%s%n", log);
}
public static void outPut(Object... logs) {
StringBuilder sb = new StringBuilder();
for (Object o : logs) {
sb.append(o).append(", ");
}
if (sb.length() > 0) sb.delete(sb.lastIndexOf(", "), sb.length() - 1);
outPut(sb.toString());
}
public static void e(String e) {
logger.error(e);
String log = String.format("%s/%s:%s", DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"), "error", e);
FileUtil.write(log);
}
public static void i(String i) {
logger.info(i);
String log = String.format("%s/%s:%s", DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss"), "info", i);
FileUtil.write(log);
}
}
在util下创FileUtil类
package com.qc.web.ks.master.util;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FileUtil {
public static File getNewFile(File dir, String originalName, String suffix) {
String fileName = String.format("%s.%s", originalName, suffix);
File file = new File(dir, fileName);
if (file.exists()) {
int index = originalName.lastIndexOf("_");
String newName;
if (index == -1) {
newName = String.format("%s_%s", originalName, 1);
} else {
String oName = originalName.substring(0, index);
String c = originalName.substring(index + 1);
if (TextUtil.isNumber(c)) {
int ic = Integer.parseInt(c);
newName = String.format("%s_%s", oName, ic + 1);
} else {
newName = String.format("%s_%s", originalName, 1);
}
}
return getNewFile(dir, newName, suffix);
} else {
return file;
}
}
public static void write(String text) {
String cur = System.getProperty("user.dir");
File dir = new File(cur + File.separator + "Logs");
if (!dir.exists()) dir.mkdir();
String target = dir.getAbsolutePath() + File.separator + DateUtil.getCurrentTime("yyyy-MM-dd") + ".txt";
try {
//true表示不覆盖原来的内容,而是加到文件的后面,如果要覆盖,这个参数也可以省略
FileWriter writer = new FileWriter(target, true);
writer.write(text);
writer.write("\n");
writer.flush();
writer.close();
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
public static boolean zip(List<String> paths, String result) {
try (FileOutputStream fos = new FileOutputStream(result)) {
ZipOutputStream zos = new ZipOutputStream(fos);
zip(null, paths, zos);
zos.close();
fos.close();
return true;
} catch (IOException e) {
LogUtil.e(e.getMessage());
return false;
}
}
private static void zip(String parent, List<String> paths, ZipOutputStream zos) throws IOException {
for (String path : paths) {
File target = new File(path);
if (target.isDirectory()) {
File[] children = target.listFiles();
if (children != null) {
List<String> childrenPaths = new ArrayList<>();
for (File child : children) {
childrenPaths.add(child.getAbsolutePath());
}
zip(target.getName(), childrenPaths, zos);
}
} else {
if (parent != null) {
zos.putNextEntry(new ZipEntry(parent + File.separator + target.getName()));
} else {
zos.putNextEntry(new ZipEntry(target.getName()));
}
FileInputStream fis = new FileInputStream(target);
int byte0;
while ((byte0 = fis.read()) > 0) {
zos.write(byte0);
}
fis.close();
zos.closeEntry();
}
}
}
public static void copy2Dir(String dirPath, List<String> paths) {
File dir = new File(dirPath);
if (!dir.exists()) {
boolean success = dir.mkdir();
}
for (String path : paths) {
try {
File target = new File(path);
File result = new File(dir, target.getName());
FileInputStream fis = new FileInputStream(target);
FileOutputStream fos = new FileOutputStream(result);
int byte0;
while ((byte0 = fis.read()) > 0) {
fos.write(byte0);
}
fis.close();
fos.close();
} catch (IOException e) {
LogUtil.e(e.getMessage());
}
}
}
}