1. 程式人生 > >log4j(一) 生成日誌檔案

log4j(一) 生成日誌檔案

        log4j開源的日誌記錄專案,我們不僅可以對輸出的日誌的格式自定義,還可以自己定義日誌輸出的目的地,比如:螢幕,文字檔案,資料庫等。本節主要講述如何將日誌資訊列印到檔案,並將不同的資訊列印到不同的檔案中。

        用log4j將日誌寫入資料庫主要用到是log4j包下的JDBCAppender類,它提供了將日誌資訊非同步寫入資料的功能,我們可以直接使用這個類將我們的日誌資訊寫入資料庫;也可以擴充套件JDBCAppender類,就是將JDBCAppender類作為基類。下面將通過一個例項來講解log4j是如何獲取日誌資訊的。

        我們的目標是獲取日誌資訊,並將其中不同的內容列印到兩個日誌檔案中。

        首先,我們先在配置檔案中配置一下,只需要配置log4j.properties即可。

log4j.rootLogger=info,A0,A1 
#info,A0  

#log4j.logger.stdout=info,A0  
log4j.logger.mylogger=info,A0   //將日誌級別為Info的資訊寫入日誌檔案
log4j.additivity.mylogger=false 
log4j.additivity.A1=false	//不允許將此資訊寫入A1檔案
log4j.appender.A0=org.apache.log4j.DailyRollingFileAppender  
log4j.appender.A0.File=logs/datuu-search-info.log <span style="font-family: Arial;">//日誌檔案1的路徑</span>
log4j.appender.A0.DatePattern='_'yyyy-MM-dd  
log4j.appender.A0.layout=org.apache.log4j.PatternLayout  
log4j.appender.A0.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c - %m%n  

log4j.logger.mylogger1=info,A1 //同上
log4j.additivity.mylogger1=false  
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender  
log4j.appender.A1.File=logs/ring-not-search.log  //日誌檔案2的路徑
log4j.appender.A1.DatePattern='_'yyyy-MM-dd  
log4j.appender.A1.layout=org.apache.log4j.PatternLayout  
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c - %m%n  

       上面的配置除了路徑和需要列印的日誌級別外,別的都不必改,直接用就可以。

       下面我們我們在程式碼中定義並列印日誌:

/**
 * @author Y
 *
 */
public class ModiautoParserImpl implements _Parser {

    private static Logger logger = Logger.getLogger("mylogger");
    private static Logger logger1 = Logger.getLogger("mylogger1");
    private static final Pattern RECORDS_NO = Pattern.compile("[0-9,]+", Pattern.CASE_INSENSITIVE);
    private static final Pattern PAGE_NO = Pattern.compile("[0-9]+[^\\]0-9]{1}", Pattern.CASE_INSENSITIVE);
    LoadHttpResource loadHttpResource = new LoadHttpResource();//http資源載入元件
    private static final String charSet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    public SimplePage parse(String htmlContent, String[] str) throws IOException, ConfigurationException, URISyntaxException {
        logger.info("****** ModiautoParserImpl start ****** ");
        
        htmlContent = htmlContent.replaceAll(" ", "");
        Source htmlSource = new Source(htmlContent.subSequence(0, htmlContent.length()));
        List divList = htmlSource.findAllElements(HTMLElementName.DIV); //找到所有DIV節點下的項

        //遍歷DIV集合,取出其下的所有項的資訊
        for (Object pE : divList) {
            Element province = (Element) pE;
            //找出省資訊
            if (province.getAttributeValue("class") != null && province.getAttributeValue("class").equalsIgnoreCase("province")
                    ) {
                //找出各省地址和每省數量

                List ulList = province.findAllElements(HTMLElementName.A);

                for (Object uO : ulList) {
                    Element u = (Element) uO;
                    
                    String url = "http://shop.modiauto.com.cn" + u.getAttributeValue("href");//每個省汽車資訊頁對應的網路地址
                    String provinceNameStr = u.extractText(); //文字提取器
                    String provinceName = provinceNameStr.substring(0, provinceNameStr.indexOf("("));
                    String number = provinceNameStr.substring(provinceNameStr.indexOf("(") + 1, provinceNameStr.indexOf(")"));
                    //解析當前頁的汽車改裝資訊
                    parserProvinceAutoInfo(url, provinceName, Integer.parseInt(number));
                }
                break;
            }
        }
        System.out.println("資訊提取完成");
        return null;
    }

    /** 解析當前省對應的各頁汽車改裝資訊
     * @param url
     * @param provinceName
     * @param total
     */
    private void parserProvinceAutoInfo(String url, String provinceName, int total) {
    	
//        logger.info("---parser autoinfo start----" + provinceName + "  --" + total);
    	double pageNo = total/8 + 1; //每頁8條,共pageNo頁
    	int times = (int) Math.ceil(pageNo); //頁數取整
    	for (int i = 1; i <= times; i++) {
    		if (i<=10) {
    			url = url.substring(0,url.indexOf(".html")-1); //形如:http://shop.modiauto.com.cn/list_p_20_
    		}else{
    			url = url.substring(0,url.indexOf(".html")-2); 
    		}
			String changedUrl =url+i+".html";            //形如:http://shop.modiauto.com.cn/list_p_20_1.html
			parserProvincePage(changedUrl, provinceName);
		    url=changedUrl;
		}
    }

    //具體解析
    private int parserProvincePage(String url, String provinceName) {

        List<SearchResultVO> resultList = new ArrayList<SearchResultVO>();
        
        String htmlContent = null;
        try {

            htmlContent = loadHttpResource.loadTextResource(url);
            
            Source htmlSource = new Source(htmlContent.subSequence(0, htmlContent.length()));
            List ulList = htmlSource.findAllElements(HTMLElementName.UL);
            
            for (Object uO : ulList) {
                Element u = (Element) uO;

                //找到一條記錄,每個class-“part"包含該頁面下所有的li標籤,即,該頁所有的商家
                if (u.getAttributeValue("class") != null && u.getAttributeValue("class").equalsIgnoreCase("parts")) {

                    SearchResultVO searchResultVO = new SearchResultVO();

                    List divList = u.findAllElements(HTMLElementName.DIV);

                    for (Object div1 : divList) {
                        Element dStoreInfo = (Element) div1;

                        //店圖片地址,獲取所有class="left"的img
                        if (dStoreInfo.getAttributeValue("class") != null && dStoreInfo.getAttributeValue("class").equalsIgnoreCase("left")) {
                            List imageList = dStoreInfo.findAllElements(HTMLElementName.IMG);
                            if(imageList!=null&&imageList.size()>0)
                            {
                                Element element = (Element)imageList.get(0);
                                String imageUrl =  element.getAttributeValue("src");
                                if (imageUrl=="" && imageUrl.length()==0 ) {
                                	imageUrl="null";
								}
                                searchResultVO.setUrl(imageUrl);
                                logger.info("店圖片地址-------------------"+imageUrl);
                            }
                        }

                    	if(dStoreInfo.getAttributeValue("class")!=null && dStoreInfo.getAttributeValue("class").equalsIgnoreCase("right")){
                    		//店地址
                    		List addrAndTypeList = dStoreInfo.findAllElements(HTMLElementName.P);
                    		if (addrAndTypeList != null && addrAndTypeList.size()>0) {
								Element element = (Element) addrAndTypeList.get(2);
								String addrStr = element.extractText();
								String address = addrStr.substring(4);
								if (address=="" && address.length()==0 ) {
									address="null";
								}
								searchResultVO.setAddress(address);
								logger.info("商家地址-------------------"+address);
							}
                    		
                    		//維修型別
                    		if (addrAndTypeList != null && addrAndTypeList.size()>0) {
                    			Element element  = (Element) addrAndTypeList.get(3);
                    			List imgList = element.findAllElements(HTMLElementName.IMG);
                    			String repairType="";
                    			for (int i = 0; i < imgList.size(); i++) {
                    				Element elementImg = (Element)imgList.get(i);
                                    String imageUrl =  elementImg.getAttributeValue("src");
                                    if (imageUrl.equals("http://static.modiauto.com.cn/png/201307/a0374156-1619-43ee-9f7c-56bef46f0f46.png")) {
										repairType+="電腦設定、";
									}else if (imageUrl.equals("http://static.modiauto.com.cn/png/201307/c1f8374e-4be1-45e0-b2a2-9d45b9a93fe2.png")) {
										repairType+="電器電裝、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/2897a918-7b8f-4481-893e-70d29968ad3f.png")){
										repairType+="剎車升級、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/b42c8822-1249-49c6-8333-8cf91e916619.png")){
										repairType+="動力重改、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/f7532b8e-3196-4549-a174-32a84bd8f28a.png")){
										repairType+="增壓系統、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/eafbaf13-7ce3-4896-9bba-719ba3b4c357.png")){
										repairType+="外觀升級、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/48d986bb-529d-4234-9907-ac4a45e75614.png")){
										repairType+="日常保養、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/e75c243e-a98f-4d0a-a9a2-78444d0eb0df.png")){
										repairType+="賽車改裝、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/6f471b17-c95c-4256-9fbd-d11eb9956843.png")){
										repairType+="避震設定、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/445409bd-8950-4cca-b918-3103ea492eca.png")){
										repairType+="內外飾品、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/108b69fe-c46c-497d-9f0e-1d77c747bd29.png")){
										repairType+="胎鈴升級、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/35ac81bd-0e36-430e-8abe-1f842aa418de.png")){
										repairType+="車身強化、";
									}else if(imageUrl.equals("http://static.modiauto.com.cn/png/201307/4118dee4-aba7-40b6-b023-3f0541b8cb5b.png")){
										repairType+="進氣排氣、";
									}else{
										repairType+="音響升級";
									}
								}
                    			if (repairType=="" && repairType.length()==0 ) {
									repairType="null";
								}
                    			searchResultVO.setRepairType(repairType);
                    			logger.info("維修型別:" + repairType);
                    		}
	                    }
                    	
                    	//class="left_a"下,所有企業名稱的標籤
                        if (dStoreInfo.getAttributeValue("class") != null && dStoreInfo.getAttributeValue("class").equalsIgnoreCase("left_a")){
                        	//店名稱
                        	List nameList = dStoreInfo.findAllElements(HTMLElementName.FONT);
                        	String nameStr="";
                        	if (nameList != null && nameList.size()>0) {
								Element element = (Element) nameList.get(0);
			                    nameStr = element.getTextExtractor().toString().trim();
			                    if (nameStr=="" && nameStr.length()==0 ) {
			                    	nameStr="null";
								}
							}
                        	searchResultVO.setName(nameStr);
							logger.info("商家名字-------------------"+nameStr);
                        	//店電話
                        	List pTelList = dStoreInfo.findAllElements(HTMLElementName.P);
                        	String telNumber = "";
                        	if (pTelList != null && pTelList.size()>0) {
								Element element = (Element) pTelList.get(1);
								String telStr = element.extractText();
								telNumber = telStr.substring(5);
								if (telNumber=="" && telNumber.length()==0 ) {
									telNumber="null";
								}
							}
                        	searchResultVO.setTelephone(telNumber);
							logger.info("商家電話-------------------"+telNumber);
							
							//String result = "@@"+"province:"+provinceName+"@@"+"name:"+searchResultVO.getName()+"@@"+"logoUrl:"+searchResultVO.getUrl()+"@@"+"address:"+searchResultVO.getAddress()+"@@"+"telephone:"+searchResultVO.getTelephone()+"@@"+"repairType:"+searchResultVO.getRepairType();
							String result = "@@"+provinceName+"@@"+searchResultVO.getName()+"@@"+searchResultVO.getUrl()+"@@"+searchResultVO.getAddress()+"@@"+searchResultVO.getTelephone()+"@@"+searchResultVO.getRepairType()+"@@";
	                    	logger1.info(result);
							String urlString =searchResultVO.getUrl();
							if (urlString.substring(0,4).equals("http")) {
								urlString=searchResultVO.getUrl();
							}else{
								urlString="http://shop.modiauto.com.cn" + searchResultVO.getUrl();
							}
							
							String fileName=provinceName + " " + searchResultVO.getName()+".jpg";
//	                    	download(urlString, fileName,"e:\\image\\");
                        }
                    }
                }
            }
        } catch (Exception e) {
            logger.info("Exception is loading url " + url, e);
        }
        return 0;
    }

        這裡我們就把logger的資訊和logger1的資訊分別列印在不同的日誌檔案中了,這樣對我們日後系統出現問題的記錄是至關重要的。

        下面是一部分日誌內容:

2015-12-17 15:14:15,149  INFO com.datuu.common.http.InternetBridge - ********http.useragent**Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7
  2015-12-17 15:14:15,178  INFO com.datuu.common.http.HttpClientTimerTask - HttpClientTimerTask strat up ok!!!!
  2015-12-17 15:14:15,223  INFO com.datuu.common.http.InternetBridge - url_matcher end used:6 ms,handler=null
  2015-12-17 15:14:15,763  WARN org.apache.commons.httpclient.HttpMethodBase - Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
  2015-12-17 15:14:16,424  INFO com.datuu.search.proxy.parser.Parser - --=====parserName========-com.datuu.search.proxy.parser.impl.ModiautoParserImpl
  2015-12-17 15:14:16,424  INFO com.datuu.search.proxy.parser.Parser - bbbbbbbbb    parsers.get(parserName) == null 
  2015-12-17 15:14:16,426  INFO com.datuu.search.proxy.parser.Parser - ccccccccccc    parserClass = class com.datuu.search.proxy.parser.impl.ModiautoParserImpl
  2015-12-17 15:14:16,426  INFO com.datuu.search.proxy.parser.Parser - ccccccccccc    parsers.put(parserName, parserClass);  end 
  2015-12-17 15:14:16,427  INFO com.datuu.search.proxy.parser.Parser - false
  2015-12-17 15:14:16,427  INFO com.datuu.search.proxy.parser.Parser - 1111111before search : keyword=;	pageSize = 
  2015-12-17 15:14:16,428  INFO com.datuu.search.proxy.parser.Parser - 2222222String[] str = [Ljava.lang.String;@3fee9989
  2015-12-17 15:14:16,575  INFO com.datuu.common.http.InternetBridge - url_matcher end used:3 ms,handler=null
  2015-12-17 15:14:16,734  WARN org.apache.commons.httpclient.HttpMethodBase - Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
  2015-12-17 15:14:16,961  INFO mylogger1 - @@安徽@@無敵車改@@http://static.modiauto.com.cn/jpg/201509/[email protected]@合肥市瑤海區北二環與銅林北路交叉口中信銀行向西50米無敵汽車改裝俱樂部@@[email protected]@電腦設定、電器電裝、剎車升級、動力重改、增壓系統、外觀升級、日常保養、賽車改裝、避震設定、內外飾品、胎鈴升級、車身強化、進氣排氣、音響升級@@
  2015-12-17 15:14:16,963  INFO mylogger1 - @@安徽@@普弗曼斯[email protected]@http://static.modiauto.com.cn/jpg/201410/[email protected]@包河區北京路與花園大道交口包河汽車用品基地8棟01-02號@@[email protected]@電腦設定、電器電裝、剎車升級、動力重改、增壓系統、外觀升級、日常保養、賽車改裝、避震設定、胎鈴升級、車身強化、進氣排氣、@@
  2015-12-17 15:14:16,965  INFO mylogger1 - @@安徽@@合肥巔峰競技汽車改裝@@http://static.modiauto.com.cn/jpg/201309/[email protected]@合肥市瑤海區鳳台路利港銀河新城27棟商業110號@@0551-65673128,[email protected]@電腦設定、電器電裝、剎車升級、動力重改、增壓系統、外觀升級、日常保養、賽車改裝、避震設定、胎鈴升級、車身強化、進氣排氣、@@
  2015-12-17 15:14:16,967  INFO mylogger1 - @@安徽@@FZ汽車機車俱樂部@@http://static.modiauto.com.cn/jpg/201406/[email protected]@新站區龍門嶺路與物流大道交叉口@@[email protected]@電腦設定、電器電裝、剎車升級、動力重改、增壓系統、外觀升級、日常保養、賽車改裝、避震設定、內外飾品、胎鈴升級、車身強化、進氣排氣、音響升級@@
  2015-12-17 15:14:16,969  INFO mylogger1 - @@安徽@@彭彭車改@@http://static.modiauto.com.cn/jpg/201407/[email protected]@合肥市廬陽區阜陽北路與汲橋路交叉口,汲橋路57號@@[email protected]@電器電裝、剎車升級、動力重改、增壓系統、外觀升級、日常保養、賽車改裝、避震設定、內外飾品、胎鈴升級、車身強化、進氣排氣、音響升級@@
  2015-12-17 15:14:16,971  INFO mylogger1 - @@安徽@@合肥MCC潮車@@http://static.modiauto.com.cn/jpg/201501/[email protected]@北二環與蘆嶺路交口巴黎春天門面@@0551-65558881,,[email protected]@電腦設定、電器電裝、剎車升級、動力重改、增壓系統、外觀升級、日常保養、賽車改裝、避震設定、內外飾品、胎鈴升級、車身強化、進氣排氣、音響升級@@
      

        具體的日誌例子意義並不大,大家可以嘗試一下,很簡單,但非常實用。

        下一篇我們講一下如何將日誌寫入資料庫。

相關推薦

log4j 生成日誌檔案

        log4j是開源的日誌記錄專案,我們不僅可以對輸出的日誌的格式自定義,還可以自己定義日誌輸出的目的地,比如:螢幕,文字檔案,資料庫等。本節主要講述如何將日誌資訊列印到檔案,並將不同的資訊列印到不同的檔案中。         用log4j將日誌寫入資料庫主要用

log4j——為什麽要用log4j

控制 clas 姓名 private 開發環境 負責人 getname 麻煩 方法名 1 試驗環境 OS:win7 JDK:jdk7 Log4j:1.2.17(好尷尬,原本是想試驗下log4j2的,結果陰差陽錯用了這個版本,不過幸好,試驗也不白試驗,試驗的作用是一樣的

IO流的應用:實現檔案的複製

package com.bjpowernode.demo03; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /** 使用FileReader/FileW

Vue原始碼分析:入口檔案

Vue原始碼分析(一):入口檔案   首先開啟命令列,從github下載原始碼,下載到自己的工作目錄。 git clone https://github.com/vuejs/vue.git   這裡我下載的是2.5.17版本的,vue 原始碼是由各種模組用 rollup 工具

跨平臺方法:獲取檔案大小引數為檔案url

在一些實際的專案中,我們需要去計算某目錄下的某個檔案的大小,從而繼續後續的業務; 如下的方法是各個平臺通用的方法,簡潔實用,已經驗證和測試過: #include <stdint.h> #include <stdio.h> #include <stdlib.h

常用工具類:FileUtile 檔案相關操作

常用工具類(一):FileUtile 檔案相關操作 public class FileUtil { private static final Logger logger = LoggerFactory.getLogger(FileUtils.class); //讀取檔案

JPEG影象密寫研究 JPEG影象檔案結構

【轉載】轉載自http://www.cnblogs.com/leaven/archive/2010/04/06/1705846.html JPEG壓縮編碼演算法的主要計算步驟如下: (0) 8*8分塊。 (1) 正向離散餘弦變換(FDCT)。 (2) 量化(q

【Qt】通過QtCreator原始碼學習Qt:pro檔案

1、學習目的 學習pro檔案的語法規則,這在跨平臺專案中會經常用到。和條件編譯相似,在pro中可以根據平臺選擇不同的編譯模組、檔案,還可以向原始碼中傳遞變數等。 2、學習方法 通過學習QtCreator原始碼中的pro檔案,來掌握pro檔案語法規則,下面以qtcreator.

PowerDesigner使用:PDM檔案匯入Oracle資料庫

PDM檔案匯入不同資料庫的過程基本相同,這裡以Oracle資料庫為例,詳解匯入的具體步驟。所使用的匯入軟體PowerDesigner版本為16.5。 配置儲存連線 載入PDM檔案 點選工具欄"Database",選擇"Configure Connections"。

Linux筆記66——nginx日誌檔案詳解

                       

工廠三兄弟之工廠方法模式日誌記錄器的設計

簡單工廠模式雖然簡單,但存在一個很嚴重的問題。當系統中需要引入新產品時,由於靜態工廠方法通過所傳入引數的不同來建立不同的產品,這必定要修改工廠類的原始碼,將違背“開閉原則”,如何實現增加新產品而不影響已有程式碼?工廠方法模式應運而生,本文將介紹第二種工廠模式——

工廠方法模式-Factory Method Pattern 工廠三兄弟之工廠方法模式日誌記錄器的設計

簡單工廠模式雖然簡單,但存在一個很嚴重的問題。當系統中需要引入新產品時,由於靜態工廠方法通過所傳入引數的不同來建立不同的產品,這必定要修改工廠類的原始碼,將違背“開閉原則”,如何實現增加新產品而不影

Spring Boot 基礎 YAML配置檔案詳解

Spring Boot 使用一個全域性的配置檔案,配置檔名是固定的 application.properties / application.yml 配置檔案的作用:修改Spr

Retrofit2+RxJava學習小計:單檔案、多檔案上傳之填平的坑

從Eclipse轉戰AndroidStudio已經有兩個月了。先誇誇Google親兒子的強大吧,各種方便就不一一道來了。主要是現在的Android陣營已經不想前兩年了。各種開源框架開源庫。也正是如此,AndroidStudio匯入開源的專案非常方便。自從Goog

15 | 答疑文章日誌和索引相關問題

來吧 增加 class 唯一性 在操作 簡單的 我希望 系統 數字 在今天這篇答疑文章更新前,MySQL實戰這個專欄已經更新了14篇。在這些文章中,大家在評論區留下了很多高質量的留言。現在,每篇文章的評論區都有熱心的同學幫忙總結文章知識點,也有不少同學提出了很多高質量的問題

檔案製作:根檔案系統樹 和 Initramfs檔案系統的製作

 根檔案系統樹製作 首先要明白的是“什麼是檔案系統”,檔案系統是對一個儲存裝置上的資料和元資料進行組織的機制。 這種機制有利於使用者和作業系統的互動。 根檔案系統之所以在前面加一個”根“,說明它是載入其它檔案系統的”根“,既然是根的話,那麼如果沒有這個根,其它的檔案

【Tomcat】Tomcat原始碼解讀系列——server.xml檔案的配置

Tomcat是JEE開發人員最常用到的開發工具,在Java Web應用的除錯開發和實際部署中,我們都可以看到Tomcat的影子。大多數時候,我們可以將Tomcat當做一個黑盒來看待,只需要將編寫的Java Web工程進行部署即可,但是,在遇到一些比較複雜難解決的問題時

複習之MyBatis基礎用法——XML對映檔案

簡介 什麼是 MyBatis ? MyBatis 是支援定製化 SQL、儲存過程以及高階對映的優秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 程式碼和手工設定引數以及抽取結果集。MyBatis 使用簡單的 XML 或註解來配置和對映基本體,將介面和

PostgreSQL9.6+PostGIS2.3學習筆記匯入shp檔案

一. 建庫以及準備工作:(使用pgAdmin4直接建庫) 開啟pgAdmin4,如下圖所示create–>Database 輸入database的名字,如下圖,輸入完成即可選擇save進行

MATLAB學習筆記開啟csv檔案並使用列資料繪圖

1、將.csv檔案直接拖到MatLab的控制檯區域,MatLab會直接開啟.csv檔案,就像EXCEL開啟.csv一樣MatLab會對每一列資料賦給一個列名稱,預設值為:VarName1、VarName2、VarName3......2、雙擊列標題,將列名稱修改為資料的標題,