- 浏览: 745190 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
梦行Monxin商城系统:
java网上商城与php网上商城比较 -
任楚娴:
你好,请问html = nvl(html); 这句中的nvl( ...
java html串转换成文本串 -
u013246812:
,谢拉!
jQuery ui Dialog 讲解参数 -
大宝剑99:
...
前端优化
针对System.out 以及 System.err 进行拦截 比如将打印信息 输出到指定的文件:
不如 拦截 Jdk logger 的 ConsoleHandler 或者 logj4j的 ConsoleAppender 时
一下是 demo 代码:
============================================================
package com.bes.graphics;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.io.RandomAccessFile;
public class SystemErrInterceptor {
private SystemErrInterceptor(){
System.setErr(new SelfPrintStream());
System.setOut(new SelfPrintStream());
}
private static final SystemErrInterceptor instance = new SystemErrInterceptor();
public static final SystemErrInterceptor getInstance(){
return instance;
}
private static class SelfPrintStream extends PrintStream{
public SelfPrintStream(){
super(new SelfOutputStream());
}
@Override
public void print(boolean b) {
log(String.valueOf(b));
}
@Override
public void print(char c) {
log(String.valueOf(c));
}
@Override
public void print(char[] s) {
log(new String(s));
}
@Override
public void print(double d) {
log(String.valueOf(d));
}
@Override
public void print(float f) {
log(String.valueOf(f));
}
@Override
public void print(int i) {
log(String.valueOf(i));
}
@Override
public void print(long l) {
log(String.valueOf(l));
}
@Override
public void print(Object obj) {
log(String.valueOf(obj));
}
@Override
public void print(String s) {
log(s);
}
@Override
public void println() {
log("\n");
}
@Override
public void println(boolean x) {
log(x + "\n");
}
@Override
public void println(char x) {
log(x + "\n");
}
@Override
public void println(char[] x) {
log(new String(x) + "\n");
}
@Override
public void println(double x) {
log(x + "\n");
}
@Override
public void println(float x) {
log(x + "\n");
}
@Override
public void println(int x) {
log(x + "\n");
}
@Override
public void println(long x) {
log(x + "\n");
}
@Override
public void println(Object x) {
log(x + "\n");
}
@Override
public void println(String x) {
log(x + "\n");
}
}
private static class SelfOutputStream extends ByteArrayOutputStream{
@Override
public synchronized void write(byte[] b, int off, int len) {
log(String.valueOf(b));
}
@Override
public synchronized void write(int b) {
log(String.valueOf(b));
}
@Override
public void write(byte[] b) throws IOException {
log(String.valueOf(b));
}
}
/**
* @param obj
*/
private static void log(Object obj){
try{
File f = new File("c:/a.log");
if(!f.exists()){
f.createNewFile();
}
RandomAccessFile raf = new RandomAccessFile(f, "rw");
raf.seek(raf.length());
String msg = obj + "\r\n";
raf.write(msg.getBytes("utf-8"));
}catch(Exception ex){
ex.printStackTrace();
}
}
}
不如 拦截 Jdk logger 的 ConsoleHandler 或者 logj4j的 ConsoleAppender 时
一下是 demo 代码:
============================================================
package com.bes.graphics;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.io.RandomAccessFile;
public class SystemErrInterceptor {
private SystemErrInterceptor(){
System.setErr(new SelfPrintStream());
System.setOut(new SelfPrintStream());
}
private static final SystemErrInterceptor instance = new SystemErrInterceptor();
public static final SystemErrInterceptor getInstance(){
return instance;
}
private static class SelfPrintStream extends PrintStream{
public SelfPrintStream(){
super(new SelfOutputStream());
}
@Override
public void print(boolean b) {
log(String.valueOf(b));
}
@Override
public void print(char c) {
log(String.valueOf(c));
}
@Override
public void print(char[] s) {
log(new String(s));
}
@Override
public void print(double d) {
log(String.valueOf(d));
}
@Override
public void print(float f) {
log(String.valueOf(f));
}
@Override
public void print(int i) {
log(String.valueOf(i));
}
@Override
public void print(long l) {
log(String.valueOf(l));
}
@Override
public void print(Object obj) {
log(String.valueOf(obj));
}
@Override
public void print(String s) {
log(s);
}
@Override
public void println() {
log("\n");
}
@Override
public void println(boolean x) {
log(x + "\n");
}
@Override
public void println(char x) {
log(x + "\n");
}
@Override
public void println(char[] x) {
log(new String(x) + "\n");
}
@Override
public void println(double x) {
log(x + "\n");
}
@Override
public void println(float x) {
log(x + "\n");
}
@Override
public void println(int x) {
log(x + "\n");
}
@Override
public void println(long x) {
log(x + "\n");
}
@Override
public void println(Object x) {
log(x + "\n");
}
@Override
public void println(String x) {
log(x + "\n");
}
}
private static class SelfOutputStream extends ByteArrayOutputStream{
@Override
public synchronized void write(byte[] b, int off, int len) {
log(String.valueOf(b));
}
@Override
public synchronized void write(int b) {
log(String.valueOf(b));
}
@Override
public void write(byte[] b) throws IOException {
log(String.valueOf(b));
}
}
/**
* @param obj
*/
private static void log(Object obj){
try{
File f = new File("c:/a.log");
if(!f.exists()){
f.createNewFile();
}
RandomAccessFile raf = new RandomAccessFile(f, "rw");
raf.seek(raf.length());
String msg = obj + "\r\n";
raf.write(msg.getBytes("utf-8"));
}catch(Exception ex){
ex.printStackTrace();
}
}
}
发表评论
-
全国最新行政区划代码(Tree)json数据以及地理数据
2020-11-11 21:23 374基于阿里提供的地理数据 http://datav.aliyun ... -
小知识点--解锁 AppChecker ping ip
2019-06-19 08:40 439在使用AppChecker 进行主动拨测的时候,目 ... -
记录年会小系统
2018-02-04 14:42 1142有点意思,年会过后,抽奖活动saas小系统扒光看看:支持P ... -
jdbc方式以 sys账号连接oracle数据的问题
2017-08-22 10:44 478多年以后,在操作oracle 时 发现 jdbc 连 ... -
proguard 代码混淆
2016-11-22 10:59 688url:http://proguard.sourceforg ... -
solr 表达式意义
2015-02-03 19:29 7701. “:”指定字段查指定值,如返回所有值*:* 2. “? ... -
solr 安装配置
2015-02-03 13:15 740solr 安装配置步骤: 1 首先下载solr(最新 ... -
javax.net.ssl.SSLKeyException: RSA premaster secre临时解决方案
2014-11-25 19:38 4411javax.net.ssl.SSLKeyException ... -
compass 小知识点
2014-09-15 10:22 932今天发现排序不管事, 查了一下:索引的问题:排序的列不进 ... -
java_opts 常用
2014-08-14 13:16 1211JVM设置,可以查考如下配置example:# Memory ... -
RPC Socket 服务调用模型
2014-04-09 16:14 596最近在看Dubbo 服务框架, 通过RPC 实现了输入和 ... -
JVM 基本参数
2014-04-03 11:49 781基本的JVM参数:-classpath, -cp: 设置类搜 ... -
eclipse 快捷键失效解决方法
2014-01-17 17:20 713有时候eclispe快捷键失效了,编码起来太难受了。 ... -
Compass+ lucene 通用代码(脱离数据库)
2013-11-08 15:09 918最近需要通过检索分类的方式进行处理,所以就写了接口与实 ... -
DEBUG远程tomcat
2013-08-21 13:35 991一、在windows系统中:打开%CATALINE_H ... -
自动获取网页内容,然后写入excel文档中
2013-07-05 15:22 3441今天需要将北京物业公司名称以及电话给整理出来,发现爱帮 ... -
继续学习jersey+spring 构建RESTful风格 webservice
2013-03-13 10:36 3454j先说一下springmvc rest风格 spring ... -
尽量少使用jaxb 进行xml与对象互换
2013-03-09 17:33 1345尽量少使用jaxb 进行xml与对象互换 问题不少,这个好 ... -
Cookie path的设置
2013-02-21 10:58 1945cookie path 设置 IE对如下的co ... -
http 相关知识点
2012-10-11 10:49 1049Host头域 Host头域指定请求资源的Intenet主机和 ...
相关推荐
当然,这只是基本的实现方式,实际应用中可能需要考虑更多细节,比如错误流的处理(`System.err.println()`)、多线程环境下的同步问题以及更复杂的过滤和日志级别控制等。通过这种方式,我们不仅可以将`System.out....
在`java.lang.System`类中,有如`System.out`、`System.in`和`System.err`这样的全局变量,它们分别代表了标准输出、标准输入和标准错误流。在常规的测试环境中,这些流的输出很难捕获和控制。然而,使用`system-...
System.err.println("异常: " + e.toString()); } } } public class LogInterceptor implements InvocationHandler { private Object delegate; public LogInterceptor(Object delegate) { this.delegate =...
首先,Java中的`System.out.println()`和`System.err.println()`是我们常见的控制台输出方式,它们主要用于调试和信息打印。但是,这些输出在图形用户界面(GUI)环境下并不直接可见,因为GUI没有与之对应的控制台...
System.err.println("发生异常:" + e.toString()); } } } ``` 这种方式的问题在于,如果业务逻辑类增加,那么需要在每个类中重复相同的日志代码,这不仅增加了代码量,也降低了代码的可维护性。 **使用AOP改进*...
这些库提供了更高级的功能,如日志切割、日志归档以及更方便的API。 二、崩溃拦截 1. UncaughtExceptionHandler:当Android应用发生未捕获的异常时,系统会默认调用`UncaughtExceptionHandler`。开发者可以自定义...
System.out.println(Thread.currentThread().getId()+"I'm Customer.Queue current size="+blockingQueue.size()); String data = (String) blockingQueue.poll(10, TimeUnit.SECONDS); if(data!=null){ System....
System.err.println("No device found"); return; } // 打开设备 PcapHandle handle = device.openLive(65536, PcapHandle FLAGS_PROMISCUOUS, 1000); // 定义处理数据包的回调函数 PacketListener ...
System.err.println(sql); } return returnValue; } ``` 在`getSql`方法中,我们可以根据配置和`BoundSql`对象来构建带参数的SQL语句,以便于直接复制到查询分析器中执行: ```java private String getSql...
System.out.println("Response received: " + response.getStatusLine()); // 处理响应 } @Override public void failed(Exception ex) { System.err.println("Request failed: " + ex.getMessage()); } @...
System.out.println("收到消息:" + message.getPayload()); // 处理接收到的消息,并可能向其他客户端广播 for (WebSocketSession s : sessions) { if (!s.equals(session)) { s.sendMessage(message); } } ...
System.out.println("用户名: " + userForm.getName() + " 密码 " + userForm.getPw()); if ("123".equals(userForm.getName())) { return mapping.findForward("ok"); } else { return mapping.findForward(...
System.err.println("拦截的方法名是:" + name); // 可以修改参数内容 queryArgs[1] = 2; return invocation.proceed(); } @Override public Object plugin(Object target) { return Plugin.wrap(target, ...
其次,整条链路上支持 DPC 的设备(DP 和 RP)是否使能了 DPC 如果使能了 DPC trigger enable,下游设备发送的 ERR_FATAL 或 ERR_NONFATAL 的 error message 会被 DPC 拦截。 然后,整条链路上的所有 PCIe 设备的 ...
- **20=RESP_SYSTEM_ERR**: 系统错误,通常是指网关内部发生的错误。 - **21=RPT_DEST_BREAK**: 目的地不可达,指的是虽然路由表存在路由,但被路由的节点暂时无法提供服务。 - **22=RPT_ROUTE_ERR**: 路由错误,...