* 应用场景:
* 1,从50M以上的日志文件中,查找想要的内容,如果这个内容的提取逻辑很复杂,这时候一般的工具就难以胜任了,我们就可以考虑使用这个小程序来处理;
* 2,处理大批量的报表文件或者订单文件,比如从商城的订单汇总txt文件中取出所有的金额字段;
* 3,其他难以处理的大批量文件;
/*public class GetFromFile {
//文件路径,从这个文件读取内容,也就是我们需要处理的文件
private static String FILE_PATH = "D:\\livePayment-addAccount.txt";
//文件输出流,输出到文件,输出处理以后的内容到这个文件
private static String FINAL_FILE_PATH = "D:\\text.txt";
//起始位置
private static int START_POSITION = 6;
//结束位置
private static int END_POSITION = 14;
public static void main(String[] args)throws Exception{
FileReader fr=new FileReader(FILE_PATH);
BufferedReader bufferedReader = new BufferedReader(fr);
FileOutputStream fileOutputStream = new FileOutputStream(new File(FINAL_FILE_PATH));
PrintStream printStream = new PrintStream(fileOutputStream);
//一行内容,原始内容
String line = "";
//截取以后的内容,也就是我们想要的内容部分
String finalString = "";
*//**
* while((line = bufferedReader.readLine()) != null) 与 while(bufferedReader.readLine() != null)
* 的区别
while((line = bufferedReader.readLine()) != null){
//while(bufferedReader.readLine() != null){
//1,读取文件,以行为单位
//line = bufferedReader.readLine();
//截取字符串,取出我们想要的内容
*//**
* Returns the length of this string.
* The length is equal to the number of Unicode code units in the string.
* public int length() {
* return count;
if(line.length() > END_POSITION){
finalString = line.substring(START_POSITION, END_POSITION);
else if(line.length() > START_POSITION && line.length() < END_POSITION){
finalString = line.substring(START_POSITION, line.length());
else{
finalString = "";
if(!"".equals(line) && line != null){
finalString = line.substring(START_POSITION, END_POSITION);
//输出到文件
printStream.println(finalString);
//关闭文件输入流
bufferedReader.close();
//关闭文件输出流
printStream.close();
* 向文件每一行批量加入一个字符串
* 读取文件,以行为单位,向每一行行尾加入固定字符串 STRING_APPENDED_TO_END_OF_LINE = " 已修改";
/*public class GetFromFile {
//文件路径,从这个文件读取内容,也就是我们需要处理的文件
private static String FILE_PATH = "D:\\xml.txt";
//文件输出流,输出到文件,输出处理以后的内容到这个文件
private static String FINAL_FILE_PATH = "D:\\text.txt";
//添加的字符串
private static String STRING_APPENDED_TO_END_OF_LINE = " 已修改";
public static void main(String[] args)throws Exception{
FileReader fr=new FileReader(FILE_PATH);
BufferedReader bufferedReader = new BufferedReader(fr);
FileOutputStream fileOutputStream = new FileOutputStream(new File(FINAL_FILE_PATH));
PrintStream printStream = new PrintStream(fileOutputStream);
//一行内容,原始内容
String line = "";
while((line = bufferedReader.readLine()) != null){
*//**
* 过滤空行(line == null)和空格行(line != null,但是有空格的行)
if(!"".equals(line) && line != null && !"".equals(line.trim())){
printStream.println(line + STRING_APPENDED_TO_END_OF_LINE);
else{
printStream.println(line);
//输出到文件
printStream.println(line + STRING_APPENDED_TO_END_OF_LINE);
//关闭文件输入流
bufferedReader.close();
//关闭文件输出流
printStream.close();
* 从日志文件中找出包含指定字符串的报错信息
* 并且满足以下条件:
* 1,从ProductUploadController.uploadImg行开始显示;
* 2,显示报错的完整信息;
* 例子:String = ProductUploadController.uploadImg
public class GetFromFile {
//文件前缀 路径
private static String FILE_PREFIX = "D:\\";
//文件名
private static String FILE_NAME = "vendor_server34_20160516";
//文件名后缀
private static String FILE_SUFFIX = ".log";
//private static String FILE_SUFFIX = ".txt";
//生成当前日期
static Date currentSeconds = new Date();
static SimpleDateFormat SimpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
static String newCreateDate = SimpleDateFormat.format(currentSeconds);
//文件路径,从这个文件读取内容,也就是我们需要处理的文件
//private static String FILE_PATH = "D:\\vendor_server34_20160516.log";
private static String FILE_PATH = FILE_PREFIX + FILE_NAME + FILE_SUFFIX;
//文件输出流,输出到文件,输出处理以后的内容到这个文件
private static String FINAL_FILE_PATH = FILE_PREFIX + FILE_NAME + "_" + newCreateDate + FILE_SUFFIX;
//指定的字符串
private static String STRING_TO_FIND = "ProductUploadController.uploadImg";
private static int TOTAL = 1;
public static void main(String[] args)throws Exception{
FileReader fr=new FileReader(FILE_PATH);
BufferedReader bufferedReader = new BufferedReader(fr);
FileOutputStream fileOutputStream = new FileOutputStream(new File(FINAL_FILE_PATH));
PrintStream printStream = new PrintStream(fileOutputStream);
//一行内容,原始内容
String line = "";
//设置一个开关,控制是否输出到文件
boolean flag = false;
while((line = bufferedReader.readLine()) != null){
* 取出所有的报错信息
if(flag){
printStream.println(line);
if(line.trim().contains(STRING_TO_FIND)){
printStream.println("第" + TOTAL + "处:");
printStream.println(line);
TOTAL++;
flag = true;
if(line.trim().startsWith("[")){
flag = false;
System.out.println("一共有:" + TOTAL + " 处!");
//关闭文件输入流
bufferedReader.close();
//关闭文件输出流
printStream.close();
1. Volley
中
添加url参数和表单
请求
中
添加Url参数,需要自己拼接字符串,或者重写getUrl方法
StringBuilder sb = new StringBuilder();
if (!url
1: jsb是javascript bind的代表,整个C/C++ 导出的绑定都在这个jsb里面,jsb 支持不支持h5;
2:
File
Utils是本地
文件
读写的一个
工具
类,全局只有一个实例;
3: jsb.
file
Utils来获取
文件
读写
工具
类的实例;
4: jsb.
file
Utils.isDirectoryExist(path): 判断路径是否存在;
5: jsb.fi...
笔者最近最近帮助技术同事解决了一个提取和分析
日志
数据的问题,主要使用了python3
中
的正则表达式和DataFrame两个功能模块,具体代码如下:
import numpy as np
import pandas as pd
import re
log=open(r'F:\yycms_access_2019-07-16.log','r').readlines() #读取
日志
文件
,模式为只读
le...
我们平时查
日志
,在测试环境,
日志
文件
只有几个的情况下,我们可以通过找时间接近的
文件
然后根据关键词定位
报错
位置,大不了都查一遍,这都可以忍受。但是在实际的生产环境下,服务器集群部署,每天的
日志
非常多非常多,每台机器都会有几十个甚至多达上百个、数百个
日志
文件
产生。遇到问题需要查询
日志
时,你会发现如果一个个
文件
去查,你会崩溃掉。因为这是很费时的重复性工作,而且也不一定能查到。
为了解决...
在工作
中
我总会通过
日志
来查找相关问题,但有时候
日志
太多有不知道又不知道
日志
什么时候打印的,这时我们可以通过一下方法来查找:
1、把目录跳到你
日志
文件
存放的地方
2、grep 关键 * 例如要查找多有有关tomcat的
信息
grep tomcat * 这样就可以查到所有tomcat的
信息
和是哪个
日志
文件
3、vi xxx.log 进入
日志
文件
4、/tomcat
我们平时遇到错误时,一般都会查看打印的log
信息
,然后定位到错误的原因,但是有时候遇到程序无响应(ANR)时就不太好办了。这里告诉大家一个通用的方法,能够有效的定位ANR错误
信息
,
找到
导致其发生的根源。
当有三种情况(程序异常退出时,程序强制关闭,程序无响应(ANR))之一产生时就会在手机的data目录生成一个log
文件
,这个
文件
中
包含了三类
信息
:
1.系统基本
信息
,包括内存,CPU,进程队列
import java.io.
File
InputStream;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.Si