链接地址:http://www.xx566.com/detail/28.html
好吧,系统开发即将结束的时候,发现以前手懒没有在service记录日志,项目中使用的是大众化的log4j。
现在几十个serviceimpl,需要加上 private static final Logger logger = Logger.getLogger(ServiceImpl.class),并且导入包import org.apache.log4j.Logger,真是一个体力活,不过在文件里一个一个添加真的是好麻烦,想想其他方法看能不能偷懒。
于是就想在指定目录下,批量修改serviceimpl,自动添加那两行代码;代码如下:
/**
* 给指定路径下的所有java类添加LOGGER
*
* @Title: generateLogger
* @author Realfighter
* @param path
* void
*/
public static void generateLogger(String path) {
File file = new File(path);
String test[] = file.list();
for (int i = 0; i < test.length; i++) {
if (test[i].endsWith(".java")) {
String filename = path + "\\" + test[i];
String content = "\n\tpublic static final Logger LOGGER = Logger.getLogger("
+ test[i].split(".java")[0] + ".class);\n}";
try {
RandomAccessFile randomFile = new RandomAccessFile(
filename, "rw");
long filelength = randomFile.length();
int count = 0;
String sb = "";
while (randomFile.getFilePointer() < filelength) {
count++;
String s = randomFile.readLine();
// String s = new String(randomFile.readLine().getBytes(
// "ISO8859-1"), "UTF-8");
if (count == 2) {
sb += "import org.apache.log4j.Logger;\n";
} else {
sb += s + "\n";
}
}
int endIndex = sb.lastIndexOf("}");
sb = sb.substring(0, endIndex) + content;
// System.out.println(sb);
String sbs = new String(sb.getBytes("ISO8859-1"), "UTF-8");
// System.out.println(sbs);
/**
* 这里不使用randomFile写入文件,出现乱码
*
randomFile.seek(0);
randomFile.writeBytes(sb);
randomFile.write(sbs.getBytes("UTF-8"));
*/
randomFile.close();
/**
* BufferedWriter写入
*/
File newfile = new File(filename);
if (newfile.exists())
newfile.delete();
newfile.createNewFile();
BufferedWriter br = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(newfile)));
br.write(sbs);
br.newLine();
br.flush();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
好吧,现在每个serviceimpl里面都已经引入了logger,具体方法的哪些地方需要即开始日志,只能手动添加了。