当使用 FileOutputStream 在 java 中将异常记录到文件中时,如何包括当前日期?
有一些可用的日志框架可以将您的数据记录到文件中。您还可以定义自己的方法。在任一情况下,要将当前时间添加到已记录的异常中,可以使用 LocalDateTime 类。
它是一个不可变类,代表日期时间,它将日期时间存储为 年-月-日-时-分-秒。此类的 now() 方法返回当前日期时间。
使用此方法将当前日期和时间连接到您的异常消息,并写入所需的文件。
示例
import java.io.FileOutputStream; import java.io.IOException; import java.time.LocalDateTime; import java.util.Arrays; import java.util.Scanner; public class LoggingToFile { private static void writeLogToFile(Exception e) throws IOException { FileOutputStream writer = new FileOutputStream("ExceptionLog.txt"); byte bytes[] = (LocalDateTime.now()+": "+e.toString()).getBytes(); writer.write(bytes); System.out.println("Exception logged to your file"); } public static void main(String [] args) throws IOException { Scanner sc = new Scanner(System.in); int[] arr = {10, 20, 30, 2, 0, 8}; System.out.println("Array: "+Arrays.toString(arr)); System.out.println("Choose numerator and denominator (not 0) from this array (enter positions 0 to 5)"); int a = sc.nextInt(); int b = sc.nextInt(); try { int result = (arr[a])/(arr[b]); System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result); }catch(ArrayIndexOutOfBoundsException ex) { System.out.println("Warning: You have chosen a position which is not in the array"); writeLogToFile(ex); }catch(ArithmeticException ex) { System.out.println("Warning: You cannot divide a number with 0"); writeLogToFile(ex); } } }
输出
Enter 3 integer values one by one: Array: [10, 20, 30, 2, 0, 8] Choose numerator and denominator (not 0) from this array (enter positions 0 to 5) 1 4 Warning: You cannot divide a number with 0 Exception logged to your file
广告