Merging by file only puts web-01.log before web-02.log - two separate halves, not one story. What you usually need is every line in the order the events actually happened, whoever logged them.
Download free trialBuy TextMerger

--sort-by-time[=FORMAT].
Two logs covering the same period come out as one timeline - every entry in the order it happened, whoever logged it. The preview shows the merged file before it is written:

Once the logs are in one timeline, Skip empty lines and Remove duplicate lines tidy the result while it is written. See removing duplicate lines while merging. Sending the result somewhere? Write the output as .gz or .zip and it is compressed as it is written.
It does not parse or reformat log entries. If your format is unusual, set the time format explicitly. Note that sorting by time reads the whole set of lines into memory, so for extremely large logs merge them in batches.
Opening a very large merged log instead of merging it: BigTextFileViewer. Splitting a huge log again: BigTextFileSplitter. Full reference: merging text files. Related use case: a month of logs.