# spawn ve tail ile loglari izleme ve pretty etmek

Aşağıdaki kod parçacığı, belirli bir dosya yolundaki logları izlemek için bir fonksiyon oluşturur. Bu kod, `spawn` komutunu kullanır.

`spawn` bir child process oluşturur ve bu process, verilen komutu çalıştırır. Bu kodda, `spawn` logları izlemek ve bunları düzgün bir şekilde formatlamak için kullanılıyor. Hata durumunda, hata mesajını konsola yazdırır.

`stdio: "inherit"` seçeneği, child process'in standart giriş, çıkış ve hata akışlarını parent process ile paylaşmasını sağlar. Bu sayede, child process'te oluşan hatalar doğrudan parent process'teki konsola yazdırılır.

`shell: true` seçeneği ise, komutun bir shell içinde çalıştırılmasını sağlar. Bu, komut satırında birden fazla komutun (`tail` ve `pino-pretty` gibi) birleştirilmesini ve boru (`|`) operatörü gibi shell özelliklerinin kullanılmasını sağlar. Bu seçeneğin dikkatlice kullanılması gereklidir, çünkü kullanıcıdan alınan girdilerle oluşturulan komutların shell üzerinde çalıştırılması, potansiyel bir güvenlik riski oluşturabilir.

```javascript
function tailLogs({ filepath, level, region }) {
	const tailCommand = `tail -f ${filepath}`
	const prettyCommand = `node_modules/.bin/pino-pretty -I level,name,time -L ${level}`
	const command = !region
		? `${tailCommand} | ${prettyCommand}`
		: `ssh ${region} '${tailCommand}' | ${prettyCommand}`

	console.log(`Running: ${command}`)
	spawn(command, { stdio: "inherit", shell: true }).on("error", error => {
		console.error(`Error: ${error.message}`)
	})
}
```
