精华内容
下载资源
问答
  • 2018-05-22 14:00:00

    //截取22号4点到8点的日志

    sed -n "/2018-05-22 04:/,/2018-05-22 08:/p" catalina.out > /tmp/log4.txt

    转载于:https://www.cnblogs.com/shenggege5240/p/9071715.html

    更多相关内容
  • 在做接口自动化过程中,需要获取请求/响应的xml报文,因为是银行系统,服务器组报文了发送到ESB服务器,请求和响应的报文会打印在ESB服务器日志中,当要截取N个请求的报文时通过人工截取显然效率低下,所有写了一...

    在做接口自动化过程中,需要获取请求/响应的xml报文,因为是银行系统,服务器组报文了发送到ESB服务器,请求和响应的报文会打印在ESB服务器的日志中,当要截取N个请求的报文时通过人工截取显然效率低下,所有写了一个报文截取工具。

     

    <?xml version="1.0" encoding="UTF-8"?>
    <service>
    <sys-header>
    <data name="SYS_HEAD">
    <struct>
    <data name="field1">
    <field type="string" length="17" scale="0">20180000000000000</field>
    </data>
    <data name="SEQ_NO">
    <field type="string" length="52" scale="0">1111111111111111111</field>
    </data>
    <data name="field3">
    <field type="string" length="2" scale="0">AA</field>
    </data>
    <data name="field4">
    <field type="string" length="2" scale="0">00</field>
    </data>
    <data name="field5">
    <field type="string" length="30" scale="0">00000000000</field>
    </data>
    <data name="field6">
    <field type="string" length="30" scale="0">000000</field>
    </data>
    </struct>
    </data>
    </sys-header>
    <app-header>
    <data name="field7">
    <struct>
    <data name="field8">
    <field type="string" length="22" scale="0">000000000000</field>
    </data>
    </struct>
    </data>
    </app-header>
    <body>      
    <data name="field9">
    <field type="string" length="3" scale="0">000</field>
    </data>
    <data name="Bfield10">
    <field type="string" length="50" scale="0">000</field>
    </data>
    <data name="field11">
    <field type="string" length="1" scale="0">000</field>
    </data>
    <data name="TRAN_ARRAY">
    <array>
    <struct>
    <data name="field9">
    <field type="string" length="3" scale="0">000</field>
    </data>
    <data name="field12">
    <field type="string" length="10" scale="0">000</field>
    </data>
    </struct>
    </array>
    </data>
    <data name="field13">
    <field type="string" length="60" scale="0">000000</field>
    </data>
    <data name="field14">
    <field type="string" length="6" scale="0"></field>
    </data>
    </body>
    </service>

    如上图所示,xml请求报文长这样,我需要在服务器中找到他所在的日志文件,并截取这个报文。

    代码如下:

    依赖jar包:ganymed-ssh2.jar

    一:

    此方法是连接服务器,并执行linux命令,多条命令用分好隔开,并将服务器的文件复制到本地

    执行顺序是,连接服务器 -> 执行命令如 cd /home/wlt/log/20180730 ; grep -lr 213234234 * ; grep -lr 651254 * (这里三个命令会按照顺序执行,并将返回的执行结果保存在list中 ) ->  执行完查找命令后,会返回包含自定字符串的文件名称,并将文件名称保存下来 -> 遍历list依次从服务器下载对应的文件,并保存在本地

    package cn.com;
    
    import ch.ethz.ssh2.*;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    
    public class ConnectServer
    {
     
        public void connect (final String ip,final int port, final String username, final String password, String cd, String cmd, String localPath)
        {
        	//连接服务器
            Connection conn = new Connection(ip,port);
            Session session = null;
            List<String> resultList = new ArrayList<String>();
            try {
                conn.connect();
                boolean isAuthenticated = conn.authenticateWithPassword(username, password);
                if (isAuthenticated == false)
                    throw new IOException("连接到服务器时发生异常");
                //执行远程命令,成功
                session = conn.openSession();
                if(cmd.contains(";"))
                {
                	cmd = cmd.replace(";", " ; ");
                }
                System.out.println("正在服务器"+ip+"查找日志文件...");
                System.out.println("执行多条命令:"+"cd "+cd +" ; " + cmd);
                session.execCommand("cd "+cd +" ; " + cmd);//分号";"隔开执行多条命令,会逐条执行,并返回执行结果
                //显示执行命令后的信息
                InputStream stdout = new StreamGobbler(session.getStdout());
                BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
                String lineStr = null;
                int count = 0;
                StringBuffer sb = new StringBuffer();
                while((lineStr = br.readLine()) != null)
                {
                	if(lineStr.trim().length() != 0)
                	{
                		resultList.add(lineStr);
                	}
                	if(lineStr.contains("."))
                	{
                		sb.append(", "+lineStr.trim());
                		count++;
                	}
                }
                if(sb.toString().trim().length() != 0)
                {
                	System.out.println("查找完成,共查到"+count+"个日志文件包含指定字符串, ["+sb.toString().substring(1)+"]");
                }else
                {
                	System.out.println("没有找到相关的日志");
                }
                
                session.close();
                
                SCPClient client = new SCPClient(conn);
                if(resultList.size() != 0)
                {
                	System.out.println("开始复制日志文件到本地...");
                	for(String str : resultList)
                	{
                		String logFileName = cd.replace("cd", "").trim() ;
                		if(str.contains("."))
                		{
                			logFileName = str.endsWith("/") ? logFileName+str : logFileName+"/"+str ;	
                			//System.out.println("logFileName:"+logFileName+"   " +localPath );
                			client.get(logFileName, localPath); //将服务器文件复制到本地
                		}
                		//System.out.println(str);
                	}
                	System.out.println("文件复制完成");
                }
                
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("连接到服务器时发生异常");
                if (conn != null) {
                    conn.close();
                }
                if (session != null) {
                    session.close();
                }
     
            } finally {
                if (conn != null) {
                    conn.close();
                }
                if (session != null) {
                    session.close();
                }
            }
            System.out.println("已断开服务器连接");
        }
    	
    public static void main(String[] args)
    {
    //测试
    	ConnectServer connectServer = new ConnectServer();
    	connectServer.connect("192.168.1.1", 22, "username", "000000", "cd /aaa/bbb/ccc/ddd", "grep -lr 213234234 * ; grep -lr aabbcc * ; ", "d:/test");
    }
    }
    

     二.

    这个类主要是读取服务器下载到的日志文件,找到指定的字符串,并截取字符串所在的xml报文。

    如:想要找到包含seq_no=1111111111111111111的所有报文,先找到这个字段所在的行,然后再根据这行截取整个报文。

    .....

    <data name="SEQ_NO">
    <field type="string" length="52" scale="0">1111111111111111111</field>
    </data>

    .....

    三.主运行程序

    报文命名、去掉重复报文等等

    package cn.com;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class ReadFile
    {	
    	//第二次读取文件,并截取xml报文
    	public String readFileAgain(int line,int beginLine,File file)
    	{
    		BufferedReader readerAgain = null;
    		int tmpLine = 0;
    		StringBuffer stringBuffer = new StringBuffer();
    		String messageStr = "";
    		FileInputStream in = null;
    		boolean boolBegain = false;
    		boolean boolEnd = false;
    		try
    		{
    			in = new FileInputStream(file);
    			readerAgain = new BufferedReader(new InputStreamReader(in, "UTF-8"));
    			//readerAgain = new BufferedReader(new FileReader(file));
    			tmpLine = line;	//seq_no
    			int lineAgain = 1;  
    			int linethree = 0;  
    			String tempStringAgain = null;
    			while((tempStringAgain = readerAgain.readLine()) != null ) //&& lineAgain <= tmpLine
    			{
    				
    				if(tempStringAgain.contains("<?xml") &&  lineAgain >= beginLine)
    				{
    					linethree = lineAgain;//上一次seq_no的位置
    					boolBegain = true;
    				}
    				if(linethree != 0 && lineAgain >= linethree && lineAgain <= tmpLine) // 
    				{
    					//System.out.println(lineAgain + ":   " + tempStringAgain);
    					stringBuffer.append(tempStringAgain.trim() );//+ "\r\n"
    					if(tempStringAgain.contains("</service>"))
    					{
    						boolEnd = true;
    						break;
    					}
    				}
    				if(lineAgain > tmpLine )
    				{
    					
    					//System.out.println(lineAgain + ":   " + tempStringAgain);
    					stringBuffer.append(tempStringAgain.trim() );//+ "\r\n"
    					if(tempStringAgain.contains("</service>"))
    					{
    						boolEnd = true;
    						break;
    					}
    					
    				}
    				lineAgain ++;
    			}
    			if(boolBegain && boolEnd)
    			{
    				messageStr = stringBuffer.toString();
    				//System.out.println(messageStr);
    				messageStr = messageStr.substring(messageStr.indexOf("<?xml"));
    				messageStr = messageStr.substring(0,messageStr.indexOf("</service>")+10);
    				//System.out.println(messageStr);
    			}else{
    				System.out.println("文件第"+tmpLine+"行的seq_no可能不在报文中");
    			}
    		} catch (FileNotFoundException e)
    		{
    			e.printStackTrace();
    		} catch (IOException e)
    		{
    			e.printStackTrace();
    		}finally
    		{
    			try
    			{
    				in.close();
    				readerAgain.close();
    			} catch (IOException e)
    			{
    				e.printStackTrace();
    			}
    		}
    		return messageStr;
    	}
    	
    	/*
    	 *读取文件,找到指定字符的位置
    	 **/
    	public List<String> getDatagram(String logFilesPath,String target,String fieldName)
    	{
    		File file = new File(logFilesPath);
    		BufferedReader reader = null;
    		FileInputStream in = null;
    		int line = 1;
    		String str = "";
    		List<String> list = new ArrayList<String>();
    		boolean bool = false;
    		int headLine = 1;
    		try
    		{
    			in = new FileInputStream(file);
    			reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));	
    			String tempString = null;
    			while((tempString = reader.readLine()) != null)
    			{	
    				if(tempString.contains("<?xml"))
    				{
    					headLine = line;//报文头开始的位置,始终保持最大行
    				}
    				if(tempString.contains(target) && line >= headLine)
    				{
    					bool = true;
    					str = readFileAgain(line,headLine, file); 
    					
    					//因为此字符是xml报文中两个字段拼接而成的
    					if(fieldName.substring(0, fieldName.indexOf(":")).equalsIgnoreCase("service_code"))//如果根据service_code查找,拼接service_code判断是否是指定的值
    					{
    						String servicecode = getValue("SERVICE_CODE" , str) + getValue("SERVICE_SCENE" , str);
    						//System.out.println(fieldName.substring(fieldName.indexOf(":")+1)+":"+servicecode);
    						if(fieldName.substring(fieldName.indexOf(":")+1).equalsIgnoreCase(servicecode))
    						{
    							list.add(str);
    						}
    					}else
    					{
    						list.add(str);
    					}
    					
    					//System.out.println(str);
    				}
    				
    				line ++;
    			}
    			//System.out.println("line = "+line);
    			if(!bool){
    				//System.err.println("文件"+logFilesPath.substring(logFilesPath.lastIndexOf("\\")+1)+"中未找到 SEQ_NO:"+target+" 请检查SEQ_NO是否正确");
    			}
    			
    		} catch (FileNotFoundException e)
    		{
    			e.printStackTrace();
    		} catch (IOException e)
    		{
    			e.printStackTrace();
    		}finally
    		{
    			try
    			{
    				reader.close();
    			} catch (IOException e)
    			{
    				e.printStackTrace();
    			}
    		}
    		return list;
    	}
    	
    	/*
    	 * 写入到文件
    	 */
    	public boolean writeFile(String fileName,String content)
    	{
    		boolean bool = false;
    		createFile(fileName);
    		File file = new File(System.getProperty("user.dir")+"\\"+getProperties("datagramfileName")+"\\"+fileName);
    		BufferedWriter bufferedWriter = null;
    		FileOutputStream fileOutputStream = null;
    		try
    		{
    			fileOutputStream = new FileOutputStream(file,false);
    			bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream, "UTF-8"));
    			bufferedWriter.write(content);
    			bool = true;			
    		} catch (FileNotFoundException e)
    		{
    			e.printStackTrace();
    		} catch (UnsupportedEncodingException e)
    		{
    			e.printStackTrace();
    		} catch (IOException e)
    		{
    			e.printStackTrace();
    		}finally
    		{
    			try
    			{
    				bufferedWriter.close();
    				fileOutputStream.close();				
    			} catch (IOException e)
    			{
    				e.printStackTrace();
    			}			
    		}
    		return bool;
    	}
    	
    	/*
    	 * 新建文件
    	 */
    	public void  createFile(String FileName)
    	{
    		String dirPath = System.getProperty("user.dir") + "\\datagramfiles";
    		File dir = new File(dirPath);
    		if (!dir.exists())
    		{
    			dir.mkdir();
    		} else
    		{
    			File file = new File(dirPath + "\\" + FileName);
    			try
    			{
    				if (!file.exists())
    				{
    					file.createNewFile();
    				}
    			} catch (IOException e)
    			{
    				e.printStackTrace();
    			}
    
    		}
    	}
    	
    	/*
    	 * 获取目录下所有文件路径+名称
    	 */
    	public List<String> getFileName(String dirPath)
    	{
    		File file = new File(dirPath);
    		File[] files = file.listFiles();
    		List<String> fileNameList = new ArrayList<String>();
    		for(File file1 : files)
    		{
    			if(file1.getName().contains(".")){
    				fileNameList.add(file1.getAbsolutePath());
    			}			
    		}
    		file.getAbsolutePath();
    		
    		return fileNameList;
    	}
    	
    	/*
    	 * 查找报文的字段值
    	 */
    	public String getValue(String key, String datagram)
    	{
    		if(datagram.trim().length() == 0)
    		{
    			System.out.println("报文为空");
    			return "";
    		}
    		if(key.trim().length() == 0 || !datagram.contains(key))
    		{
    			System.out.println("报文中没有字段:"+key);
    			return "";
    		}
    		key = key.toUpperCase();
    		int index = datagram.indexOf(key);
    		datagram = datagram.substring(index);
    		datagram = datagram.substring(datagram.indexOf("<field"),datagram.indexOf("</field>"));
    		String fieldValue = datagram.substring(datagram.indexOf(">")+1);
    		return fieldValue;
    	}
    	
    	/*
    	 * 获取properties文件中的值
    	 */
    	public String getProperties(String key)
    	{
    		InputStream in = null;
    		String value = "";
    		try
    		{
    			in = new BufferedInputStream(new FileInputStream(System.getProperty("user.dir") + "\\args.properties"));
    			Properties properties = new Properties();
    			properties.load(in);
    			value = properties.getProperty(key);
    		} catch (FileNotFoundException e)
    		{
    			e.printStackTrace();
    		} catch (IOException e)
    		{
    			e.printStackTrace();
    		}
    		return value;
    	}
    	
    	/*
    	 *替换空格、换行符等等 
    	 */
    	public String replaceBlank(String str)
    	{
    		String dest = "";
    		if(str!=null)
    		{
    			Pattern p = Pattern.compile("\\s*|\t|\r|\n");
    			Matcher m = p.matcher(str);
    			dest = m.replaceAll("");
    		}
    		return dest;
    	}
    	
    	/*
    	 * 格式化报文
    	 */
    	public String format(String str)
    	{
    		
    		if(str.trim().length() == 0)
    		{
    			return "";
    		}
    		str = str.replace("<", "\r<").replace("\r</field>", "</field>").replace("\r<?xml", "<?xml");
    		return str;
    	}
    	
    	/*
    	 * 取流水号对应的交易名称
    	 */
    	public String getDatagramName(String key, String datagramName)
    	{
    		String value = "";
    		if(key != null && datagramName.trim().length() != 0)
    		{
    			Map<String, String> map = new HashMap<String, String>();
    			String[] datagramNameArr = datagramName.contains(",") ? datagramName.split(",") : new String[] { datagramName };
    			for (String name : datagramNameArr)
    			{
    				if (name.contains(":"))
    				{
    					map.put(name.substring(0, name.indexOf(":")).trim(), name.substring(name.indexOf(":") + 1).trim());
    				}else
    				{
    					System.out.println("datagramName格式错误,例:seq_no1:aaaaaaa,seq_no2:bbbbbbbb");
    				}
    
    			}
    			if(map != null)
    			{
    				value = map.get(key);
    			}
    		}
    		
    		
    		return value;
    	}
    	
    
    	
    }
    

    四.

    将相关信息写在配置文件 args.properties

    #可查找任何唯一的字段,字段的名称(不区分大小写),一次只能查找一个字段,如:SERVICE_CODE , SEQ_NO , BUSS_SEQ_NO...
    fieldName = SEQ_NO
    #输入字段的值,一直能查找多个值,多个值用逗号隔开 如:2000001020180310093900000007,201000010201803100930000000
    fieldValue =  2049180727001194073486
    
    
    #存放日志的文件夹,默认logfiles文件夹,不用更改
    logfileName = logfiles
    
    #存放报文的文件夹,默认datagramfiles文件夹,不用更改
    datagramfileName = datagramfiles
    
    #自定义报文名称,多个用英文逗号隔开, 如果想要流水号05082208461425894的报文名称包含指定名字,写成这样 2018030520180305082208461425894:xxx-xxxx
    #报文最终保存的名称, 如:xxx-xxxx&0100100000204(2018030520180305082208461425894)20180725-697070请求报文_1.xml
    #datagramName = 2018030520180305082208461425894:xxx-xxxx,2018030520180305082208461425894:yyyy-yy
    
    #是否需要连接服务器获取日志,连接:true/不连接:false
    is_connect = true
    
    #服务器地址
    ip = 00.000.0.000
    
    #端口号
    port = 00
    
    #账号
    username = uesrname
    
    #密码
    password = 123456
    
    #服务器保存日志的文件夹
    logfilesDirPath = /wts/logs/rrylog/Server
    
    #linux命令,多个命令用逗号隔开,如 grep -lr 213234234 * ; grep -lr 651254 * , 
    #如果有多个流水号,可用#代替,运行时会自动将#替换成seq_no
    #默认此查找命令不用修改
    cmd = grep -lr # *
    
    #本地保存日志的路径,如果需要保存在其他地方,可写上路径,默认保存在logfilename文件夹
    #localPath=D:/abcdefg
    
    #如果按其他字段查找可增加,格式如:tran_timestamp=<field type="string" length="17" scale="0">#</field> , 字段名小写,字段值用#代替
    service_code=<field type="string" length="30" scale="0">#</field>
    seq_no=<field type="string" length="52" scale="0">#</field>
    buss_seq_no=<field type="string" length="22" scale="0">#</field>
    

    打成jar包,用 .bat运行jar包。效果如下:

     

     

    如果要截取其他字符,可以修改getDatagram(String logFilesPath,String target,String fieldName)和readFileAgain(int line,int beginLine,File file)方法

    END

    展开全文
  • Linux服务器截取日志

    2020-04-09 21:34:56
    1.截取第100行到500行的日志输出到new.log文件 sed -n '100,500'p catalina.out > new.log 2.截取2020-04-08这天19点55分到10点19分的日志输出到new1.log文件 sed -n '/2020-04-08 19:55/, /2020-04-08 22:19/...

    1.截取第100行到500行的日志输出到new.log文件  
    sed -n '100,500'p catalina.out > new.log

    2.截取2020-04-08这天19点55分到10点19分的日志输出到new1.log文件  
    sed -n '/2020-04-08 19:55/, /2020-04-08 22:19/p' catalina.out  > new1.log

    3.截取2020-04-08这天19点55分27秒到10点19分47秒的日志输出到new2.log文件  
    sed -n '/2020-04-08 19:55:27/, /2020-04-08 22:19:47/p' catalina.out  > new2.log

    4.截取2020-04-08这天19点55分27秒313毫秒到10点19分47秒130毫秒的日志输出到new3.log文件  
    sed -n '/2020-04-08 19:55:27,313/, /2020-04-08 22:19:47,130/p' catalina.out  > new3.log

    展开全文
  • 经常用到的三个命令(远程收集日志必须要获取administrator权限,否则有一些会获取失败): dumpel -l system -f system.log ...-d是针对-l的对应文件进行截取,180代表往前半年内截取日志 -f是对应生成的文件
  • Linux Sed与日志截取

    千次阅读 2022-01-27 09:24:00
    -type f` #删除符合条件的行 sed -i '/好人/d' sed.txt # 删除从第2行到末尾 sed -i '2,$d' sed.txt 3、文本追加 #在有钱人后面加准了 sed -i 's/有钱人/& 准了/g' sed.txt 二、Sed在日志截取的应用 当需要排查以前...

    grep、sed、awk号称Linux文本处理三剑客,grep用于文本过滤,sed适合行处理,awk适合列处理,awk以前有两篇文章介绍过,今天介绍一下sed的使用。

    一、Sed基本用法

    sed是流编辑器,一次处理一行数据,它先把当前一行数据存储在临时缓存区,然后用sed命令处理缓存区内容,处理完成后把缓存区内容输出到屏幕,接着再处理下一行,一直到文件末尾,与awk处理方式是一样的,并且原文件不会被改动。

    sed.txt

    千豪是个好人
    千豪是个帅哥
    千豪要成为一个有钱人

    1、文本替换

    #将sed.txt文件里的千豪替换为万豪

    sed -i 's/千豪/万豪/g' sed.txt

    -i:会修改源文件
    s: 替换命令
    g:  全局替换,如果不加g只替换每一行第一次匹配的模式

    #将sed目录下所有文件里千豪替换为万豪

    sed -i 's/千豪/万豪/g' `find /root/sed -type f`

    2、文本删除

    #删除单个文件或目录下所有文件中的空行 ^$匹配空行

    sed -i '/^$/d' sed.txt
    sed -i '/^$/d' `find /root/sed/ -type f`

    #删除符合条件的行

    sed -i '/好人/d' sed.txt

    # 删除从第2行到末尾

    sed -i '2,$d' sed.txt

    3、文本追加

    #在有钱人后面加准了

    sed -i 's/有钱人/& 准了/g' sed.txt

    二、Sed在日志截取的应用

    当需要排查以前某一个时间段的日志,日志文件比较大没有办法直接用vi打开,这时可以用sed将当时的日志截取出来进行分析。

    sed -n '/2022-01-27 10:33:00/,/2022-01-27 10:36:59/p' nohup.out

    但上面的语句,需要日志文件里有10:33:00时的记录否则是匹配不了,我们可以使用正则来匹配截取出10:33到10:36的日志如下。

    sed -n '/2022-01-27 10:33:[0-5][0-9]/,/2022-01-27 10:36:[0-5][0-9]/p' nohup.out

    #截取出日志文件从第几行到第几行的输出

    sed -n '113406,114017p' so_log.txt > so_log2.txt

    展开全文
  • 我们经常需要去Linux服务器上查看服务运行日志,但是有时候日志文件很大看起来很不方便,这个时候我们需要对日志进行切割筛选出自己需要的日志,比如查看某段时间内的日志,命令如下: sed-n'/2018-11-0109:00:00...
  • 服务器上文件较大,比如tomcat下产生的catalina.out文件
  • sed 截取日志内容

    2021-04-08 10:00:03
    我们常常会直接上服务器使用 cat ,head , tail 等命令来查看. 但是,当文件内容比较多的、比较大的时候,这些命令显然不太适用。用grep不太方便直接过滤出来,可以使用sed根据时间去查找。 比如前几天查看tomcat log...
  • 主要介绍了python实现获取客户机上指定文件并传输到服务器的方法,涉及Python实现C/S架构程序与socket程序的使用技巧,需要的朋友可以参考下
  • linux 按日期截取日志文件

    千次阅读 2019-12-10 14:53:27
    Linux服务器上查看服务运行日志,有时候日志文件很大看起来很不方便,经常要对日志进行筛选, 比如查看某段时间内的日志 将catalina.out 日志09点到10点的保存到a.txt ,如下: sed -n '/2019-11-17 09:/,/2019-...
  • 今天爱分享给大家带来Linux 服务器log日志切割方法【三种附命令行】,希望能够帮助到大家。业务服务器上产生了一个 10G 的log文件,然后很悲催的是什么样的文本编辑器都打不开,然后只能切分一下文件,再查看文本...
  • 服务器日志是此类信息的有用来源。它们包含您的服务器收到的每个请求的 IP 地址、日期时间、请求类型、URL、服务器响应等。在本文中,我们将了解如何从 Apache 和 NGINX 服务器的日志文件中提取 IP 地址。 如何从...
  • 服务器管理】利用Xshell远程查看服务器的系统日志并保存至本地1 服务器管理工具2 连接远程服务器3 系统日志管理3.1 /var/log/3.2 直接查看日志3.3 把日志文件下载到本地4 总结 本文主要记录使用Xshell来远程管理...
  • 外协有个哥们,说是用CMD查看日志,自己找了很多方法,都没有找到查看方法,是不是呢?需要验证一下子。 tomcat在linux下查看日志是进入tomcat安装目录用: tail -f logs/catalina.out 就可以查看日志的实时输出;...
  • 网站用户行为日志采集和后台日志服务器搭建

    万次阅读 多人点赞 2018-07-04 00:50:16
    下面是博主访问京东首页,其自定义采集的数据日志格式的截取部分: https://mercury.jd.com/log.gif?t=www.100000&m=UA-J2011-1&pin=zaomianbao&uid=1522992113160771150291522&sid=15229913133260771150291522|...
  • shell脚本提取服务器一段时间的日志并输出异常结果
  • 目录1 概述1.1 页面浏览日志采集1.2 页面交互日志采集2 页面浏览日志采集流程2.1 页面访问过程3 页面交互日志采集流程 1 概述 浏览器的页面日志采集分两大类:页面浏览日志采集、页面交互日志采集。 1.1 页面浏览...
  • 接到任务是,需要从web日志中取出设备的操作信息,并推送kafka。领导要求使用logstash,要评估技术可行性。我这边就在自己的机器上,逐步安装logstash,kafka并进行相关的调试安装与试运行。 附我们日志的数据案例:...
  • 上篇文章我们已经大概了解了 日志截取常用的三个命令:grep sed awk。 具体可参考: linux实战(一)----日志的截取-----文本过滤器grep、文本流式编辑器sed、报表生成器awk的运用 本文主要记录 这三个命令的运用,...
  • 本页内容上下文问题影响因素解决方案变体示例结果上下文...在许多情况下,列表中还要包括诸如客户端浏览器检测或用户活动情况日志记录之类的项目。Web应用程序服务器框架可以自动执行这其中的许多任务,但是,有时您需
  • pgm -A -f iplist.txt -b "find /home/admin/logs/app/gateway.log -type f|xargs grep 'CMCCAccountServiceImpl'" iplist存ip列表
  • 实现思路:利用sed命令截取当前周期内产生的日志文件,通过钉钉群机器人上报。 这里我们用Nginx、php产生的日志做讲解。 截取一段Nginx的错误日志: 2019/11/08 10:28:38 [error] 5136#0: *3...
  • 背景任何程序运行起来免不了产生很多日志,其中错误日志需要最为关心的。在某些时候会将错误日志和正常日志分开,但我们的系统却没有这么做。更麻烦的是,每个小时存储一个日志文件,所以每次为了查找当天是否有错误...
  • 主要需求:连接远程服务器(HBase写入端),监听HBase写入日志截取ROWKEY,写入Kafka。 实现方式:通过ch.ethz.ganymed包ganymed-ssh2远程连接linux服务器,执行tail命令,生成实时数据流,写入kafka 主要代码:...
  • Windows服务器自动化抓取log并上传

    千次阅读 2019-10-21 12:51:03
    最近因为项目有日志审计的需要,需要把多个windows服务器的log每天抓取并自动上传到指定的服务器中。经过查阅相关知识之后,决定采用bat脚本+定时计划任务的方式来实现。 一、Window事件日志简介 Windows系统日志...
  • 前言 Nginx日志对于统计、系统服务排错很有用。Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。...客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,refe
  • MySQL 日志详解

    千次阅读 2021-03-14 17:39:05
    一、MySQL 日志分类MySQL 日志主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志。错误日志: -log-err (记录启动、运行、停止 MySQL 服务时出现的信息)查询日志:-log (记录建立的客户端连接和执行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,608
精华内容 11,443
关键字:

服务器日志截取