# Appending Random number in csv file name

**URL:** <https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575>\
**Category:** Logstash\
**Created:** [February 8, 2021, 10:13am UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575 "2021-02-08T10:13:27Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![ritusingh](https://avatars.discourse-cdn.com/v4/letter/r/ac91a4/32.png) [@ritusingh](https://discuss.elastic.co/u/ritusingh)\
**Post date:** [February 8, 2021, 10:13am UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575/1 "2021-02-08T10:13:28Z")

</div>

Hi,  
I want to append random number after the file name.

```auto
output {
	stdout { codec => rubydebug }
  csv {
    # elastic field name
    fields => ["@timestamp","requestid","ngnix.responsebytes","ngnix.cpu.usage"]
	
    # This is path where we store output.   
    path => "C:/Users/M1056317/ELK/csv/try6/csv-export-(random number).csv"
		
  }
 
}

```

Please guide me how can I do it.

---

<div class="post-metadata">

**Author:** ![ParashB](https://avatars.discourse-cdn.com/v4/letter/p/b2d939/32.png) [@ParashB](https://discuss.elastic.co/u/ParashB)\
**Post date:** [February 8, 2021, 3:47pm UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575/2 "2021-02-08T15:47:44Z")

</div>

You could use the event fields in the path. So, you could use the timestamp. Something like the below should work for you.

`path => "C:/Users/M1056317/ELK/csv/try6/csv-export-%{+YYYY-MM-dd-HHmmSS}.csv"`

Alternatively you could generate a random number using ruby filter in the logstash filter , assign it to a field (randomNum) and use the same field (randomNum) in the path.

`path => "C:/Users/M1056317/ELK/csv/try6/csv-export-%{randomNum}.csv"`

---

<div class="post-metadata">

**Author:** ![ritusingh](https://avatars.discourse-cdn.com/v4/letter/r/ac91a4/32.png) [@ritusingh](https://discuss.elastic.co/u/ritusingh)\
**Post date:** [February 9, 2021, 6:51am UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575/3 "2021-02-09T06:51:43Z")

</div>

I tried the first solution as I dont want an extra field in my document, even for 5 minute scheduler it is giving 1 file per second. Can you make me understand how does the name effects opening and closing of file?

---

<div class="post-metadata">

**Author:** ![ritusingh](https://avatars.discourse-cdn.com/v4/letter/r/ac91a4/32.png) [@ritusingh](https://discuss.elastic.co/u/ritusingh)\
**Post date:** [February 9, 2021, 11:23am UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575/4 "2021-02-09T11:23:30Z")

</div>

I tried second solution as well as I already have one unique field for all the logs, but again instead of five minutes , it is creating one csv for each unique requestId. Where am I going wrong?

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [February 9, 2021, 4:40pm UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575/5 "2021-02-09T16:40:30Z")

</div>

You would have to write code in a ruby filter to add a field (under [@metadata]) that contains the time rounded to five minutes and then use a sprintf reference to it in the path option.

---

<div class="post-metadata">

**Author:** ![ritusingh](https://avatars.discourse-cdn.com/v4/letter/r/ac91a4/32.png) [@ritusingh](https://discuss.elastic.co/u/ritusingh)\
**Post date:** [February 10, 2021, 1:58pm UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575/6 "2021-02-10T13:58:01Z")

</div>

Hi Badger, I am very new to Ruby and tried what you said,

```auto
filter{
ruby {
		code => '
			t = Time.at(event.get("@timestamp").floor_to(15*60))	
		'
	
	}
}

output {
	stdout { codec => rubydebug }
  csv {
    # elastic field name
    fields => ["@timestamp","requestid","ngnix.responsebytes","ngnix.cpu.usage"]

    path => "C:/Users/M1056317/ELK/csv/try7/csv-export-%{+YYYY-MM-dd_hh}%{t}.csv"
		
  }
 
}

```

I am getting this exception:

```auto
[2021-02-10T19:20:05,154][ERROR][logstash.filters.ruby][main][7c96a8d6d717052e84a4d23fab6fa33c245ac64b1497bbcce0de457a118e444b] Ruby exception occurred: undefined method `floor_to' for 2021-02-10T13:48:40.249Z:LogStash::Timestamp
Did you mean? Float

```

Can you please help?

---

<div class="post-metadata">

**Author:** ![Badger](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/badger/32/25190_2.png) [@Badger](https://discuss.elastic.co/u/Badger)\
**Post date:** [February 10, 2021, 11:56pm UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575/7 "2021-02-10T23:56:27Z")

</div>

I would do it using

```
    ruby {
        code => '
            t = (event.get("@timestamp").to_f/300).floor*300
            event.set("[@metadata][suffix]", Time.at(t).strftime("%Y-%m-%d-%H-%M"))
        '
    }

```

then use `"C:/Users/M1056317/ELK/csv/try7/csv-export-%{[@metadata][suffix]}.csv"` in the path option.

---

<div class="post-metadata">

**Author:** ![ritusingh](https://avatars.discourse-cdn.com/v4/letter/r/ac91a4/32.png) [@ritusingh](https://discuss.elastic.co/u/ritusingh)\
**Post date:** [February 11, 2021, 8:19am UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575/8 "2021-02-11T08:19:59Z")

</div>

Thanks Badger. Its working.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [March 11, 2021, 8:20am UTC](https://discuss.elastic.co/t/appending-random-number-in-csv-file-name/263575/9 "2021-03-11T08:20:42Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
