I think the following is a cute approach, but it's not very efficient:
Solve[0 ==
DSolveValue[{y'[x] ==
D[Piecewise[{{t[x] Log[2 - t[x]],
0 <= t[x] < 1}}, (t[x] - 2) Log[t[x]]], t[x]], y[0] == 0,
t'[x] == 1, t[0] == 0,
WhenEvent[Mod[x, 2] == 0, t[x] -> t[x] - 2]},
y[x], {x, 0, 100},
Method -> {"Events", "MaxEvents" -> 1020} (*not needed unless x goes past 2000*)
],
x
]
(*
{{x -> 0}, {x -> 2}, {x -> 4}, {x -> 6}, {x -> 8}, {x -> 10},
{x -> 12}, {x -> 14}, {x -> 16}, {x -> 18}, {x -> 20},
{x -> 22}, {x -> 24}, {x -> 26}, {x -> 28}, {x -> 30},
{x -> 32}, {x -> 34}, {x -> 36}, {x -> 38}, {x -> 40},
{x -> 42}, {x -> 44}, {x -> 46}, {x -> 48}, {x -> 50},
{x -> 52}, {x -> 54}, {x -> 56}, {x -> 58}, {x -> 60},
{x -> 62}, {x -> 64}, {x -> 66}, {x -> 68}, {x -> 70},
{x -> 72}, {x -> 74}, {x -> 76}, {x -> 78}, {x -> 80},
{x -> 82}, {x -> 84}, {x -> 86}, {x -> 88}, {x -> 90},
{x -> 92}, {x -> 94}, {x -> 96}, {x -> 98}, {x -> 100}}
*)
It takes almost 5 seconds. The full 2026 takes 86 seconds (Macbook Pro M4 Max).
For some reason, WRI often plays method option values close to the chest.